关于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; } }
相关文章推荐
- 通过httpClient访问第三方API
- Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程
- Android Network --------------关于Android自带的org.apache.http和apache官方的(第三方的)HttpClient的问题
- httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
- 关于Xutils框架出现无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase解决方案
- crawler_java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件_设置代理
- 关于Xutils框架出现无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase解决方案
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
- httpClient访问网络,httpclient.execute(httpGet)方法不执行问题
- 关于Xutils框架出现无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase解决方案
- .NET WebApi Delete方法访问提示:“HTTP 错误 405.0 - Method Not Allowed”
- Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程
- 关于Android网络访问请求的一些总结 包括HttpClient HttpUrlConnection Volley
- 关于Xutils框架出现无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase解决方案
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
- 关于网络二_HTTP协议访问网络:HttpUrlConnection、HttpClient
- android开发问题-关于Xutils框架出现无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase解决方案
- 关于Xutils框架出现无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase解决方案
- Android学习指南之三十:使用URLConnection和HttpClient访问网络的方法
- 关于Xutils框架出现无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase解决方案