public static Map uploadFileByHTTP(File postFile,String postUrl,MappostParam){//Logger log = LoggerFactory.getLogger(UploadTest.class);
Map resultMap = new HashMap();
CloseableHttpClient httpClient=HttpClients.createDefault();try{//把一个普通参数和文件上传给下面这个地址 是一个servlet
HttpPost httpPost = newHttpPost(postUrl);//把文件转换成流对象FileBody
FileBody fundFileBin = newFileBody(postFile);//设置传输参数
MultipartEntityBuilder multipartEntity =MultipartEntityBuilder.create();
multipartEntity.setCharset(Charset.forName("utf-8"));
multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart(postFile.getName(), fundFileBin);//相当于//设计文件以外的参数
Set keySet =postParam.keySet();for(String key : keySet) {//相当于
multipartEntity.addPart(key, new StringBody(postParam.get(key), ContentType.create("application/json", Consts.UTF_8)));
}
HttpEntity reqEntity=multipartEntity.build();
httpPost.setHeader("Content-type", "application/json");
httpPost.setEntity(reqEntity);//log.info("发起请求的页面地址 " + httpPost.getRequestLine());//发起请求 并返回请求的响应
CloseableHttpResponse response =httpClient.execute(httpPost);try{///log.info("----------------------------------------");//打印响应状态//log.info(response.getStatusLine());
resultMap.put("statusCode", response.getStatusLine().getStatusCode());//获取响应对象
HttpEntity resEntity =response.getEntity();if (resEntity != null) {//打印响应长度//log.info("Response content length: " + resEntity.getContentLength());//打印响应内容
resultMap.put("data", EntityUtils.toString(resEntity,Charset.forName("UTF-8")));
}//销毁
EntityUtils.consume(resEntity);
}catch(Exception e) {
e.printStackTrace();
}finally{
response.close();
}
}catch(ClientProtocolException e1) {
e1.printStackTrace();
}catch(IOException e1) {
e1.printStackTrace();
}finally{try{
httpClient.close();
}catch(IOException e) {
e.printStackTrace();
}
}//log.info("uploadFileByHTTP result:"+resultMap);
returnresultMap;
}