您的位置:首页 > 理论基础 > 计算机网络

解决httpclient上传文件的时候中文文件名乱码的问题

2016-06-24 21:30 711 查看

需要做一下设置:

完整代码:
public static String post(String url,Map<String, Object> paramsMap) throws ClientProtocolException, IOException{
HttpPost httpPost = new HttpPost(url);
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.setCharset(Charset.forName("utf-8"));
entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8);
//填充参数
Set<String> keySet = paramsMap.keySet();
for(String key:keySet){
Object obj = paramsMap.get(key);
if(obj instanceof File){ //参数是File 类型
File file = (File) obj;
entityBuilder.addPart(key, new FileBody(file));
}else if(obj instanceof String){ //参数是String 类型
String value = (String) obj;
entityBuilder.addPart(key, new StringBody(value,contentType));
}else if(obj instanceof byte[]){
byte[] bytes = (byte[]) obj;
entityBuilder.addPart(key, new ByteArrayBody(bytes,ContentType.DEFAULT_BINARY,key));
}else{
throw new IllegalArgumentException(key+"的类型是"+obj.getClass()+"(允许的参数类型为File 或者 String)。");
}
}

httpPost.setEntity(entityBuilder.build());

HttpResponse response = httpClient.execute(httpPost);
if(response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);
return result;
}
return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  安卓