您的位置:首页 > 理论基础 > 计算机网络

关于HttpClient访问第三方api的方法

2019-08-10 16:57 381 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_41203780/article/details/99087634
[code]    Maven依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.37</version>
</dependency>

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.3</version>
</dependency>
[code]package com.riching.welerp.service.api.workflow.controller;

import com.alibaba.fastjson.JSONObject;
import com.riching.welerp.common.web.Result;
import com.riching.welerp.service.api.hrms.utils.PostUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

/**
* deployController class
*
* @author fanWeiDong
* @date 2019/8/8
*/
@RestController
@RequestMapping("/workflow")
@Api(tags = "工作流", description = "工作流 Controller")
public class deployController {

@Value("${flowableRoute}")
private String flowableRoute;

@ApiOperation(value = "创建新的流程部署======")
@PostMapping("/definitions")
public Result<JSONObject> creatNewDeployment(MultipartFile multipartFile){

JSONObject result = PostUtil.doPostFile(multipartFile, flowableRoute + "flowable-rest/service/repository/deployments");
if(result==null){
return Result.fail("创建新的流程部署失败");
}
return Result.success("创建新的流程部署成功",result);
}

@ApiOperation(value = "根据id删除已部署流程模型")
@DeleteMapping ("/definitions/{deploymentId}")
public Result<T> deleteNewDeployment(@PathVariable("deploymentId")String deploymentId){
boolean result= PostUtil.doDelte(flowableRoute + "flowable-rest/service/repository/deployments/"+deploymentId);
if(result==false){
return Result.fail("根据id删除已部署流程模型失败");
}
return Result.success("删除已部署流程模型成功");
}

@ApiOperation(value = "根据key,name传参分页查询",notes = "当前页和每页显示数量必传")
@GetMapping ("/definitions/findDeployListByNameAndKey")
public Result<JSONObject> getDeployListByNameAndKey(String name, String key,Integer currentPage,Integer size){
Integer start=(currentPage-1)*size;
String parms="?latest=true&size="+size+"&start="+start;
if (StringUtils.isNotEmpty(name)) {

try {
name=URLEncoder.encode(name,"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
parms+="&name="+name;

}
if (StringUtils.isNotEmpty(key)) {
parms += "&key=" + key;
}
JSONObject result= PostUtil.doGet(flowableRoute +"flowable-rest/service/repository/process-definitions"+parms);
if(result==null){
return Result.fail("获取以部署流程模型列表失败");
}
result.put("page",currentPage);

return Result.success("获取以部署流程模型列表成功",result);
}

@ApiOperation(value = "获取流程图=====")
@GetMapping ("/instances/{processInstanceId}/diagram")
public Result<T> getProcessInstance(@PathVariable("processInstanceId")String processInstanceId, HttpServletResponse response){
String result= PostUtil.doGetDiagram(flowableRoute +"flowable-rest/service/runtime/process-instances/"+processInstanceId+"/diagram");
if (result==null){
return Result.fail("获取流程图失败");
}
response.setContentType("image/png");
PrintWriter writer = null;
try {
writer = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
writer.write(result);
return Result.success("获取流程图成功");
}

@ApiOperation(value = "获取所有流程实例")
@GetMapping ("/instances")
public Result<JSONObject> getProcessInstancesByprocessDefinitionKeyAndprocessDefinitionId(String processDefinitionKey,String processDefinitionId,Integer currentPage,Integer size){
Integer start=(currentPage-1)*size;
String parms="?size="+size+"&start="+start;
if (StringUtils.isNotEmpty(processDefinitionKey)) {
parms+="&processDefinitionKey="+processDefinitionKey;
}
if (StringUtils.isNotEmpty(processDefinitionId)) {
parms += "&id=" + processDefinitionId;
}

JSONObject result= PostUtil.doGet(flowableRoute +"flowable-rest/service/runtime/process-instances"+parms);
result.put("page",currentPage);
if(result==null){
return Result.fail("获取所有流程实例失败");
}
return Result.success("获取所有流程实例成功",result);
}

@ApiOperation(value = "删除流程实例====")
@DeleteMapping ("/instances/{processInstanceId}")
public Result<T> deleteProcessInstance(@PathVariable("processInstanceId")String processInstanceId){
boolean result= PostUtil.doDelte(flowableRoute +"flowable-rest/service/runtime/process-instances/"+processInstanceId);
if(result==false){
return Result.fail("删除流程实例失败");
}
return Result.success("删除流程实例成功");
}
}
 
[code]package com.riching.welerp.service.api.hrms.utils;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.FileUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.charset.Charset;

public class PostUtil {

/*
*date 传递的json数据
*port 接口地址
*return 返回的json数据
*/
public static String  doPost(String date, String port) {
HttpClient client = HttpClients.createDefault();
// 要调用的接口方法
String url = port;
HttpPost post = new HttpPost(url);
String result=null;
try {
StringEntity s = new StringEntity(date.toString(), "utf-8");//此处为解决传输来的数据变成乱码的问题
s.setContentEncoding("UTF-8");
s.setContentType("application/json");

post.addHeader("content-type", "application/json;charset:utf-8");
post.setEntity(s);
HttpResponse res = client.execute(post);
if (res.getStatusLine().getStatusCode() == 201) {//此处判断状态是否为201
result = EntityUtils.toString(res.getEntity());
//jsonObject = JSONObject.parseObject(result);// 返回json格式:
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return result;
}

public static JSONObject  doPostFile(MultipartFile multipartFile, String port) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
JSONObject jsonObject=null;
try {
String fileName = multipartFile.getOriginalFilename();
HttpPost httpPost = new HttpPost(port);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("file", multipartFile.getBytes(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
builder.addTextBody("filename", fileName);// 类似浏览器表单提交,对应input的name和value
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);// 执行提交
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
// 将响应内容转换为字符串
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
jsonObject=JSONObject.parseObject(result);
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return jsonObject;
}
public static boolean  doDelte( String port) {
HttpClient client = HttpClients.createDefault();
// 要调用的接口方法
String url = port;
HttpDelete delete=new HttpDelete(url);
boolean result=false;
JSONObject jsonObject=null;
try {
delete.addHeader("content-type", "application/json;charset:utf-8");

HttpResponse res = client.execute(delete);
if (res.getStatusLine().getStatusCode() == 204) {//此处判断状态是否为204

result = true;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return result;
}
public static JSONObject  doGet( String port) {
HttpClient client = HttpClients.createDefault();
// 要调用的接口方法
String url = port;
HttpGet Get=new HttpGet(url);
String result=null;
JSONObject jsonObject=null;
try {

Get.addHeader("content-type", "application/json;charset:utf-8");

HttpResponse res = client.execute(Get);
if (res.getStatusLine().getStatusCode() == 200) {//此处判断状态是否为200
result = EntityUtils.toString(res.getEntity());
jsonObject = JSONObject.parseObject(result);// 返回json格式:
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return jsonObject;
}

public static String doGetDiagram ( String port) {
HttpClient client = HttpClients.createDefault();
// 要调用的接口方法
String url = port;
HttpGet Get=new HttpGet(url);
String result=null;
HttpResponse res =null;
try {

Get.addHeader("content-type", "application/json;charset:utf-8");

res = client.execute(Get);
if (res.getStatusLine().getStatusCode() == 200) {//此处判断状态是否为200
result = EntityUtils.toString(res.getEntity());
}
} catch (Exception e) {
throw new RuntimeException(e);
}

return result;
}

}

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐