http请求其他接口的utils
首先在pom中加入
关于http需要的jar包
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.4.1</version>
</dependency>
json解析的jar包
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
因为http请求完成之后返回的数据是json数据,所以我们需要用json的jar包来解析数据,下面是java代码
/**.
* @Description: TODO(调用接口获取数据)
* @author xiehj
* @date 2020年8月19日 下午3:20:05
* @version V1.0
*/ public class MpcStaffInfoUtil { //这里需要导入log的jar包
private static final Logger log = Logger.getLogger(MpcStaffInfoUtil.class);
/**
* 发送post请求的方法
*/
public static String pushPost(String code) {
//这里是判断code参数是否为空的判断
if(StringUtils.isNotBlank(code)) {
log.info("调用根据code查询数据接口的方法。");
} else {
log.info("调用查询全量数据接口的方法。");
}
//CloseableHttpClient httpClient = HttpClients.createDefault();
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//HttpClient httpClient = new DefaultHttpClient();
//设置连接超时 connetionTimeout:指客户端和服务器建立连接的timeout,
//setSocketTimeout 设置连接超时
RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(60000)
.setSocketTimeout(60000).setConnectTimeout(120000).build();
//请求的url
String url = null;
//这里是根据code来判断到底该用配置文件里面的那个接口
if (StringUtils.isNotBlank(code)) {
//readParperties.getSftp这个方法地址 https://www.cnblogs.com/xhj-java/p/13536697.html
url = readParperties.getSfpt("/mpcstaffinfo.properties", "TEST_URL_CODE");
url = url + code;
} else {
url = readParperties.getSfpt("/mpcstaffinfo.properties", "TEST_URL");
}
log.info("请求的url:" + url);
//String url = "http://127.0.0.1:8080/hrbase-web/httpRestInterface/listStaffInfo?StaffCode="+code;
CloseableHttpResponse response = null;
//HttpResponse response = null;
try {
//替换空格
url= url.replaceAll(" ", "%20");
//连接远程服务
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig);
/* InputStreamEntity ise = new InputStreamEntity(is, -1L);
httpPost.setEntity(ise);//设置传入流
*/
response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
log.info("HTTP响应状态为:" + response.getStatusLine());
if (responseEntity != null) {
log.info("HTTP响应内容长度为:" + responseEntity.getContentLength());
// 主动设置编码,来防止响应乱码
String responseStr = EntityUtils.toString(responseEntity, StandardCharsets.UTF_8);
//log.info("HTTP响应内容为:" + responseStr);
return responseStr;
}
} catch (Exception e) {
e.printStackTrace();
}/*finally{
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}*/
return null;
}
//StaffInfoEntity 是数据里面的实体类
public static List<StaffInfoEntity> getMpc(String code) {
String pushPost = MpcStaffInfoUtil.pushPost(code);
List<StaffInfoEntity> staToMpc = null;
JSONObject jsStr = JSONObject.fromObject(pushPost);
//result 是返回的数据的名称 即 map.put("result",list);
String string = jsStr.getString("result");
/*try {
String string = jsStr.getString("result");
} catch (JSONException e) {
System.out.println("取不到result的值!");
return staToMpc;
}*/
if(StringUtils.isNotBlank(string)) {
final Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
final List<StaffInfoEntity> res = gson.fromJson(string, new TypeToken<List<StaffInfoEntity>>() {
}.getType());
return staToMpc;
}
return staToMpc;
}
http请求其他接口的utils的更多相关文章
- webapi+Task并行请求不同接口实例
标题的名称定义不知道是否准确,不过我想表达的意思就是使用Task特性来同时请求多个不同的接口,然后合并数据:我想这种场景的开发对于对接过其他公司接口的人不会陌生,本人也是列属于之内,更多的是使用最原始 ...
- 代码片段:处理HTTP请求的接口
以下程序用来获取用户传递过来的信息. 1.头文件 /* * 这个是处理HTTP请求的接口头文件 */ #define KEY_VALUE_MAX 1024 /* 键值的最大长度 */ typedef ...
- 通过HttpWebRequest请求https接口
一.为什么进行代理接口的开发: 有些项目需要访问被墙了哒网站,比如前不久公司开发项目需要使用google地图的接口,而google在中国被墙了,所有打算做一个代理接口服务,将代理放到国外服务器上,通过 ...
- node请求下载接口时乱码
先说下问题 之前做的一个项目,三端同时开发(PC.WEB.APP),由于架构方面的原因,服务均不对外开放,接口地址自然也就不对外暴露了,所有请求都要经过node转发,此为背景.... 网站有个扫描二维 ...
- python接口自动化(八)--发送post请求的接口(详解)
简介 上篇介绍完发送get请求的接口,大家必然联想到发送post请求的接口也不会太难,被聪明的你又猜到了.答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统 ...
- java编程(2)——servlet和Ajax异步请求的接口编程(有调用数据库的数据)
第一步: 1.为项目配置 Tomcat 为 server: 2.导入 mysql的jar包 到项目目录中: 第二步:编码 1.数据库连接类ConnectMysql.java代码: package co ...
- java编程(1)——servlet和Ajax异步请求的接口编程(没有调用数据库的数据)
编程应用背景: 使用HttpServlet接口来编写一个动态登录的接口(需要在Tomcat容器发布) 登录的 LoginSample 类代码: package com.zhang.java; publ ...
- c#POST请求php接口
POST请求php接口 /// <summary> /// 指定Post地址使用Get 方式获取全部字符串 /// </summary> /// <param name= ...
- Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
转自:http://blog.csdn.net/hwj3747/article/details/53635539 在Java使用HttpURLConnection请求rest接口的时候出现了POST请 ...
- ajax请求jesery接口无法获取参数的问题解决方案
jesery是强大的RESTful api框架, 很多人在用它做web项目时会遇到这样一个问题: ajax请求jesery接口无法获取输入参数, 可明明接口已经指明了Consume是applicati ...
随机推荐
- 极速免费部署,国内可用 ChatGPT 网页版
极速免费部署,国内可用 ChatGPT 网页版 我的星球微信群虽然接入了ChatGPT,但是依然有星友反馈说艾特机器人太麻烦,有些问题也不方便公开. 昨天充值api成功了,终于有底气把网页版开放给星友 ...
- Docker介绍下载安装、制作镜像及容器、做目录映射、做端口映射
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以 ...
- 【Zookeeper】(三)部署与使用、服务器节点动态上下线案例分析
目录 Zookeeper部署与使用 1 分布式安装部署 配置服务器编号 增加zoo.cfg集群配置参数 2 启动集群服务器 3 启动集群客户端和命令 4 ️API的使用 引入依赖 创建客户端 创建节点 ...
- 狠狠地切割(Hard Version)
狠狠地切割(Hard Version) (https://www.luogu.com.cn/problem/P8889) 跟easy版非常像,但是数据太大开标记数组的话会爆所.以得转换一下 开一个ma ...
- Redis - 数据类型映射底层结构
简介 从数据类型上体现就是,同一个数据类型,在不同的情况下会使用不同的编码类型,底层所使用的的数据结构也不相同. 字符串对象 字符串对象的编码可以是 int.raw 和 embstr 三者之一. em ...
- 开心档之MySQL 管理
MySQL 管理 启动及关闭 MySQL 服务器 Windows 系统下 在 Windows 系统下,打开命令窗口(cmd),进入 MySQL 安装目录的 bin 目录. 启动: cd c:/mysq ...
- Java双向链表实现队列
将双向链表做简单的改造,即可实现一个FIFO(First Input First Out)队列, 该队列只在头节点出队,尾节点入队. 一般来说定义节点类只需一个后驱节点next即可. 这里保留pre节 ...
- 带你了解关于FastAPI快速开发Web API项目中的模板和Jinja
摘要:FastAPI 实际上是为构建 API 和微服务而设计的.它可用于构建使用 Jinja 提供 HTML 服务的 Web 应用程序. 本文分享自华为云社区<FastAPI 快速开发 Web ...
- MD5简述及常见解密网址推荐
什么是md5 MD5(Message-Digest Algorithm 5)(信息-摘要算法5), 一种被广泛使用的[密码散列函数](https://baike.baidu.com/item/密码散列 ...
- 记一次 某智能制造MES系统CPU 爆高分析
一:背景 1. 讲故事 前段时间有位朋友找到我,说他 docker 中的web服务深夜cpu被打满,让我帮忙看一下,很多朋友问docker中怎么抓dump,我一般都推荐使用 procdump 这款自动 ...