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

httpclient上传文件及文件名中文乱码问题

2016-09-14 09:15 666 查看
logger.info("请求url: "+url);
HttpClient httpclient = new DefaultHttpClient();
HttpPost http = new HttpPost(url);
File file=null;
try {
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
if(requestParameterMap.size()==0&¶ms!=null){
for (String[] param : params) {
logger.info(param[0]+ "--->" +param[1]);
formparams.add(new BasicNameValuePair(param[0], param[1]));
}
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
http.setEntity(uefEntity);
}else {
// MultipartEntity mutiEntity = new MultipartEntity();
MultipartEntity mutiEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE,
null, Charset.forName("utf-8"));         //文件名乱码设置
for(Map.Entry<String, String> entry:requestParameterMap.entrySet()){   //字符串请求参数
logger.info(entry.getKey() + "--->" + entry.getValue());
mutiEntity.addPart(entry.getKey(), new StringBody(entry.getValue(),Charset.forName("utf-8")));
}
if(requestFileMap.size()>0){      //文件请求参数
for(Map.Entry<String, String> entry:requestFileMap.entrySet()){
logger.info(entry.getKey() + "--->" + entry.getValue());
file=new File(dir+"/"+entry.getValue());
FileBody fileBody = new FileBody(file);
// mutiEntity.addPart(entry.getKey(),new FileBody(file,entry.getValue(),"application/octet-stream", "utf-8"));
mutiEntity.addPart(entry.getKey(),fileBody);
http.setEntity(mutiEntity);
}
}
}
HttpResponse response1 = httpclient.execute(http);
HttpEntity entity = response1.getEntity();
if(file!=null&&file.exists()){
file.delete();
}
String[] name=new File(fileName).getName().split("_");
String responseFileName="httpResponse_"+name[1];
responseFile=new File(dir+"/"+responseFileName);
logger.info("响应文件路径:  "+responseFile.getPath());
FileOutputStream fo=new FileOutputStream(responseFile);
Header[] heads = response1.getAllHeaders();
// 打印所有响应头
for(Header h:heads){
logger.info(h.getName() + ":" + h.getValue());
fo.write((h.getName() + ":" + h.getValue() + System.getProperty("line.separator")).getBytes());
fo.flush();
}
fo.write(("" + System.getProperty("line.separator")).getBytes());
if (entity != null) {
/*result= EntityUtils.toString(entity,"utf-8");
logger.info("响应结果: ");
logger.info(result);
fo.write(result.getBytes());*/
byte[] responseByte=EntityUtils.toByteArray(entity);
logger.info("responseByte.length: "+responseByte.length);
logger.info("响应内容: "+new String(responseByte,"utf-8"));
logger.info(bytesToHexString(responseByte).getBytes());
fo.write(bytesToHexString(responseByte).getBytes());
fo.flush();
fo.close();
try {
sendFile(responseFile,fileName);
} catch (InterruptedException e) {
logger.info(e);
}
}
} catch (ClientProtocolException e) {
logger.info(e);
}catch(UnsupportedEncodingException e1) {
logger.info(e1);
}catch (IOException e) {
logger.info(e);
}finally{
httpclient.getConnectionManager().shutdown();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: