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(); }
httpclient上传文件及文件名中文乱码问题
最新推荐文章于 2023-09-18 11:24:48 发布