pom:
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.4</version>
</dependency>
1、controller接收文件:
public Result<?> validateResult(@RequestParam("file") MultipartFile megLiveData) {
}
2、MultipartFile转换为File
try{
File file = null;
//将MultipartFile转换为File
file = new File(megLiveData.getOriginalFilename());
FileUtils.copyInputStreamToFile(megLiveData.getInputStream(), file);
}catch(Exception e){
throw new RuntimeException();
}
finally {
//这种方法会产生临时文件,用完后需要删除
if (file.exists()) {
file.delete();
}
}
3、
@Override
public FaceVerifyResultDTO forFaceVerifyResult(FaceVerifyDTO faceVerifyDTO) {
HashMap<String, Object> map = new HashMap<>();
map.put("key_1","value_1");
map.put("key_2","value_2");
map.put("key_3","value_3");
map.put("meglive_data",faceVerifyDTO.getMeglive_data());
FaceVerifyResultDTO result = null;
try {
String resp = sendFile(map);
result = JSON.parseObject(resp, new TypeReference<FaceVerifyResultDTO>() {});
log.info(" result : {} ", JSON.toJSONString(result));
} catch (Exception e) {
log.warn(" FaceVerifyResultDTO : {} url: {}", JSON.toJSONString(faceVerifyDTO), FOR_FACE_VERIFY_RESULT_URL);
}
if (result == null) {
log.warn(" FaceVerifyResultDTO : {} url: {}", JSON.toJSONString(faceVerifyDTO), FOR_FACE_VERIFY_RESULT_URL);
}
return result;
}
public static final String MEDIA_TYPE_MULTIPART = "multipart/form-data;charset=utf-8";
public static final String MEDIA_TYPE_TEXT = "text/plain;charset=utf-8";
/**
* 发送文件消息
* @param map
* @return
*/
private String sendFile(Map<String, Object> map) {
String boundary = UUID.randomUUID().toString().replace("-", "");
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
try {
HttpPost httpPost = new HttpPost("url");
MultipartEntityBuilder builder =MultipartEntityBuilder.create();
builder.setBoundary(boundary);
for (Map.Entry<String, Object> entry : map.entrySet()) {
Object value = entry.getValue();
if (value instanceof File) {
File file = (File) value;
builder.addBinaryBody(entry.getKey(), file, ContentType.parse(MEDIA_TYPE_MULTIPART), entry.getKey());
} else if (value instanceof byte[]) {
byte[] data = (byte[]) value;
builder.addBinaryBody(entry.getKey(), data, ContentType.parse(MEDIA_TYPE_MULTIPART), entry.getKey());
} else if (value instanceof InputStream) {
builder.addBinaryBody(entry.getKey(), (InputStream) value, ContentType.parse(MEDIA_TYPE_MULTIPART), entry.getKey());
} else {
builder.addTextBody(entry.getKey(), value.toString(),ContentType.parse(MEDIA_TYPE_TEXT));
}
}
httpPost.setEntity(builder.build());
HttpResponse response = httpClient.execute(httpPost);// 执行提交
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
// 将响应内容转换为字符串
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
} catch (Exception e) {
log.warn("forFaceVerifyResult FaceVerifyResultDTO : {} url: {}", JSON.toJSONString(result), FOR_FACE_VERIFY_RESULT_URL);
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}