项目之间的接口调用
1.需求
现有两个java jfinal 项目,项目1和项目2,现通过项目1调用项目2接口获得项目2传入的图片文件,调用接口有两个参数,一个string类型fileName,一个int类型type
2.maven依赖
<!-- Apache HttpClient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.13</version>
</dependency>
3.实现
项目1:
上传接口
/**
* 上传
*/
public void upload() throws Exception {
System.out.println("getPara(\"str\") = " + getPara("str"));
System.out.println("str = " + AesUtil.decrypt(getPara("str")));
VersionVo vo = ValidationUtil.convert(AesUtil.decrypt(getPara("str")), VersionVo.class);
Integer type = vo.getType();
final List<UploadFile> file = getFiles();
AssertUtil.isTrue(file == null, "上传文件为空");
AssertUtil.isTrue(type == null, "文件类型不能为空");
StringBuilder fileName = new StringBuilder("");
for (UploadFile uploadFile : file) {
String s = uploadToProject("appFiringGuide/upload",uploadFile.getFile(),type);
if (fileName.length() == 0){
fileName.append(s);
}else {
fileName.append("," + s);
}
}
renderJson(Result.success(fileName.toString(), "文件上传成功"));
}
调用项目2接口
/**
* 调用数据中心上传图片
* @param method
* @param file
* @param type
* @return
*/
private String uploadToProject(String method,File file,Integer type){
String newFileName = "";
// 项目2的URL
String project2Url = Constant.ENAVMSI_DATACENTER_URL + "/" + method + "?type=" + type;
// 创建HTTP客户端
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建POST请求
HttpPost httpPost = new HttpPost(project2Url);
// 创建文件实体
FileBody fileBody = new FileBody(file, ContentType.DEFAULT_BINARY);
// 创建参数实体
HttpEntity entity = MultipartEntityBuilder.create()
.addPart("file", fileBody)
.addPart("type", new StringBody(String.valueOf(type), ContentType.TEXT_PLAIN))
.build();
// 设置请求实体
httpPost.setEntity(entity);
try {
// 发送请求并获取响应
HttpResponse response0 = httpClient.execute(httpPost);
// 处理响应...
StatusLine statusLine = response0.getStatusLine();
int statusCode = statusLine.getStatusCode();
HttpEntity httpEntity = response0.getEntity();
if (httpEntity != null && statusCode == 200) {
// 使用 InputStream 或其他方法读取响应体数据
InputStream inputStream = httpEntity.getContent();
// 处理响应体数据...
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuilder responseStringBuilder = new StringBuilder();
while ((line = reader.readLine()) != null) {
responseStringBuilder.append(line);
}
reader.close();
inputStream.close();
// 输出响应结果
System.out.println("Response: " + responseStringBuilder.toString());
JSONObject jsonObject = JSONObject.parseObject(responseStringBuilder.toString());
newFileName = jsonObject.getString("data");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 关闭HTTP连接
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return newFileName;
}