介绍思路
1.使用httpclent
2.使用MultipartEntityBuilder 类来传入模拟数据
3.查看MultipartEntityBuilder类的api找到对应的方法进行使用提交
4.将文本文件传入对象中
5.将对象转成httpentity
6.httpclient 调用httpentity
7.得到返回内容 ok
话不多说直接上代码
// 消息中转站
@SuppressWarnings("rawtypes")
private String sendMail(String url, HttpServletRequest req) throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpPost httppost = new HttpPost(url);
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
// 添加文本信息
Map map = req.getParameterMap();
Set keSet = map.entrySet();
for (Iterator itr = keSet.iterator(); itr.hasNext();) {
Map.Entry me = (Map.Entry) itr.next();
Object ok = me.getKey();
Object ov = me.getValue();
String[] value = new String[1];
if (ov instanceof String[]) {
value = (String[]) ov;
} else {
value[0] = ov.toString();
}
for (int k = 0; k < value.length; k++) {
if (ok.equals("url"))
continue;
multipartEntity.addTextBody((String) ok, value[k]);
}
}
if(ServletFileUpload.isMultipartContent(req)) {
// 添加文件
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
Iterator<String> itr = multipartRequest.getFileNames();
while (itr.hasNext()) {
String name = itr.next();
MultipartFile file = multipartRequest.getFile(name);
String fileName = file.getOriginalFilename();
multipartEntity.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
multipartEntity.addTextBody("filename", fileName);// 类似浏览器表单提交,对应input的name和value
}
}
HttpEntity reqEntity = multipartEntity.build();
httppost.setEntity(reqEntity);
HttpResponse httpResponse = httpclient.execute(httppost);
HttpEntity entity = httpResponse.getEntity();
String rawHTMLContent = EntityUtils.toString(entity);
EntityUtils.consume(entity);
return rawHTMLContent;
} finally {
httpclient.close();
}
}
ok
持续更新