详情
由于业务需求,需要向其他项目的接口发送文件和数据,特此把代码分享一下。
发送端
//url:需要向指定接口发送的url, dataFile:需要传输的文件, currentTime,filecode,sign:分别是接收端需要的数据,这些可以根据自己
//的具体业务来发送相应的数据
private void post(String url, File dataFile, String currentTime, String filecode, String sign) throws Exception {
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(url);
CloseableHttpResponse response = null;
try {
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
IppcXzwSendDataEntity entity = new IppcXzwSendDataEntity();
entity.setCurrentTime(currentTime);
entity.setFilecode(filecode);
entity.setSign(sign);
multipartEntityBuilder.addBinaryBody("dataFile", dataFile, ContentType.DEFAULT_BINARY, dataFile.getName());
ContentType contentType = ContentType.create("text/plain", Charset.forName("UTF-8"));
multipartEntityBuilder.addTextBody("currentTime", currentTime, contentType);
multipartEntityBuilder.addTextBody("filecode", filecode, contentType);
multipartEntityBuilder.addTextBody("sign", sign, contentType);
HttpEntity httpEntity = multipartEntityBuilder.build();
httpPost.setEntity(httpEntity);
response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
System.out.println("HTTPS响应状态为:" + response.getStatusLine());
if (responseEntity != null) {
System.out.println("HTTPS响应内容长度为:" + responseEntity.getContentLength());
// 主动设置编码,来防止响应乱码
String responseStr = EntityUtils.toString(responseEntity, StandardCharsets.UTF_8);
System.out.println("HTTPS响应内容为:" + responseStr);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
接收端
@RequestMapping(value = "/reportYsData", method = { RequestMethod.POST, RequestMethod.GET })
@ResponseBody
public String reportYsData(@RequestParam(value = "dataFile") CommonsMultipartFile dataFile,
@RequestParam(value = "currentTime") String currentTime,
@RequestParam(value = "filecode") String filecode,
@RequestParam(value = "sign") String sign
) {
//具体的实现业务
}