左右HttpClient上传的方法来解决中国的乱码

        二手HttpClient人们都知道通过addTextBody方法来加入要上传的文本信息,可是,假设要上传中文的话。或还有中文名称的文件会出现乱码的问题,解决的方法事实上非常easy:

第一步:设置MultipartEntityBuilder的编码方式为UTF-8。

builder.setCharset(Charset.forName(HTTP.UTF_8));//设置请求的编码格式 

第二步:创建ContentType对象,指定UTF-8编码。

ContentType contentType= ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8); 
     

第三步:使用addPart+ StringBody取代addTextBody。如:

StringBody stringBody=new StringBody("中文乱码",contentType);
builder.addPart("test",stringBody);

附上完整代码:

ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8);      
HttpClient client=new DefaultHttpClient();// 开启一个客户端 HTTP 请求 
HttpPost post = new HttpPost(url);//创建 HTTP POST 请求  
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setCharset(Charset.forName(HTTP.UTF_8));//设置请求的编码格式
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//设置浏览器兼容模式
int count=0;
for (File file:files) {
//			FileBody fileBody = new FileBody(file);//把文件转换成流对象FileBody
//			builder.addPart("file"+count, fileBody);
	builder.addBinaryBody("file"+count, file);
	count++;
}		
builder.addTextBody("method", params.get("method"));//设置请求參数
builder.addTextBody("fileTypes", params.get("fileTypes"));//设置请求參数
StringBody stringBody=new StringBody("中文乱码",contentType);
builder.addPart("test", stringBody);
HttpEntity entity = builder.build();// 生成 HTTP POST 实体  	
post.setEntity(entity);//设置请求參数
HttpResponse response = client.execute(post);// 发起请求 并返回请求的响应
if (response.getStatusLine().getStatusCode()==200) {
	return true;
}
return false;


版权声明:本文博主原创文章,博客,未经同意不得转载。

posted @ 2015-09-26 14:29  hrhguanli  阅读(370)  评论(0编辑  收藏  举报