Spring Boot调用api post接口
Spring Boot调用api post接口
示例
/**
* 调用api post接口
*
* @param url
* @param jsonObject
* @return java.lang.String
* @author li.zhm
* @date 2022/8/20 13:45
* @history <author> <time> <version> <desc>
*/
public static String sendPost(String url, JSONObject jsonObject) {
log.info("请求post地址:{}", url);
String body = "";
// 创建httpclient对象
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse response = null;
// 创建post方式请求对象
HttpPost httpPost = new HttpPost(url);
RequestConfig requestConfig =
RequestConfig.custom().setConnectTimeout(35000).setConnectionRequestTimeout(35000).setSocketTimeout(60000).build();
httpPost.setConfig(requestConfig);
// 装填参数
StringEntity s = new StringEntity(jsonObject.toString(), "utf-8");
s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
// 设置参数到请求对象中
httpPost.setEntity(s);
log.info("请求参数:{}", jsonObject.toString());
// 设置header信息, 指定报文头【Content-type】 【User-Agent】
httpPost.setHeader("Content-type", "application/json");
httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
try {
// 执行请求操作,并拿到结果(同步阻塞)
response = client.execute(httpPost);
log.info("response 返回状态码:{}", response.getStatusLine().getStatusCode());
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK || response.getStatusLine().getStatusCode() == HttpStatus.SC_CREATED) {
// 获取结果实体
HttpEntity entity = response.getEntity();
if (entity != null) {
// 按指定编码转换结果实体为String类型
body = EntityUtils.toString(entity, "utf-8");
log.info("响应body:", body);
}
// 关闭流
EntityUtils.consume(entity);
} else {
log.error("response 返回状态码异常:{}", response.getStatusLine().getStatusCode());
}
// 释放链接
response.close();
} catch (IOException e) {
log.error("调用amf-sub api异常,{0}", e);
e.printStackTrace();
} finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
log.error("关闭http client异常,{0}", e);
e.printStackTrace();
}
}
if (response != null) {
try {
response.close();
} catch (IOException e) {
log.error("关闭http response异常,{0}", e);
e.printStackTrace();
}
}
}
return body;
}
pom
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<!-- fastjson End -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.15</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
浙公网安备 33010602011771号