开发者社区 问答 正文

Android httppost 上传文件 中文乱码

利用CustomMultipartEntity附加的内容;
按照网上的指示,为httppost设置编码,new FileBody时转码,统统不好使!
真心求助!!
核心代码如下:

@Override
 protected String doInBackground(String... params) {
 String serverResponse = null;
    HttpClient httpClient = new DefaultHttpClient();
    HttpContext httpContext = new BasicHttpContext();
    HttpPost httpPost = new HttpPost(url);

    try {
        ProgressListener listenner = new ProgressListener() {
            @Override
            public void transferred(long num) {
                publishProgress((int) ((num / (float) totalSize) * 100));
            }
        };
        CustomMultipartEntity multipartContent = new CustomMultipartEntity(listenner);

        // We use FileBody to transfer an image

         if (paraMap != null && !paraMap.isEmpty()) {
             for (Map.Entry<String, String> entry : paraMap.entrySet()) {
                 multipartContent.addPart(entry.getKey(), new StringBody(entry.getValue()));
             }
         }
         multipartContent.addPart("data", new FileBody(file,HTTP.UTF_8));
        totalSize = multipartContent.getContentLength();

        // Send it
        httpPost.setEntity(multipartContent);
        HttpResponse response = httpClient.execute(httpPost);
        serverResponse = EntityUtils.toString(response.getEntity());
        JSONObject jsons = new JSONObject(serverResponse);
         zid = jsons.optString("zid");
         filepath = jsons.optString("filepath");
         guid = jsons.optString("guid");
         //file.delete();    
    } catch (Exception e) {
        e.printStackTrace();
    }

    return serverResponse;
}

展开
收起
爵霸 2016-06-12 14:04:08 2838 分享 版权
1 条回答
写回答
取消 提交回答
  • multipartContent.addPart(entry.getKey(), new StringBody(entry.getValue()));
    这里不对,应该按照二进制上传

    2019-07-17 19:33:56
    赞同 展开评论