- 需要引入依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
- 使用案例
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
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.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.net.URI;
import java.nio.charset.Charset;
public class UseHttpclientDemo {
public static void main(String[] args) {
String postResultData = postResult();
if (postResultData == null) {
System.out.println("{\"errno\":-1,\"errmsg\":\"fail\",\"message\":\"调用接口获取数据失败\"}");
return;
}
System.out.println(postResultData);
String getResultData = getResult();
if (getResultData == null) {
System.out.println("{\"errno\":-1,\"errmsg\":\"fail\",\"message\":\"调用接口获取数据失败\"}");
return;
}
System.out.println(getResultData);
}
public static String postResult() {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(3000)
.setConnectionRequestTimeout(4000)
.setSocketTimeout(5000)
.build();
StringEntity requestBody = new StringEntity("{\"invoke_info\":{\"pos_1\":[{}],\"pos_2\":[{}],\"pos_3\":[{}]}}", ContentType.APPLICATION_JSON);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost postRequest = new HttpPost();
postRequest.setConfig(requestConfig);
postRequest.setURI(URI.create("https://ug.baidu.com/mcp/pc/pcsearch"));
postRequest.addHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString());
postRequest.addHeader("xxx","xxx");
postRequest.addHeader("xxx","xxx");
postRequest.setEntity(requestBody);
String result = null;
try {
CloseableHttpResponse response = httpClient.execute(postRequest);
if (response == null || response.getStatusLine() == null || response.getStatusLine().getStatusCode() !=200) {
return null;
}
String responseBody = EntityUtils.toString(response.getEntity(), Charset.defaultCharset());
result = responseBody;
} catch (ClientProtocolException e) {
System.out.println("接口调用异常:"+e);
System.out.println(ExceptionUtils.getStackTrace(e));
} catch (IOException e) {
System.out.println("接口调用异常:"+e);
System.out.println(ExceptionUtils.getStackTrace(e));
} finally {
if (httpClient != null) {
try {
httpClient.close();
} catch (IOException e) {
System.out.println("关闭httpclient失败:");
System.out.println(ExceptionUtils.getStackTrace(e));
}
}
}
return result;
}
public static String getResult() {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(3000)
.setConnectionRequestTimeout(4000)
.setSocketTimeout(5000)
.build();
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet getRequest = new HttpGet();
getRequest.setConfig(requestConfig);
getRequest.setURI(URI.create("https://dict.youdao.com/login/acc/query/accountinfo?withCredentials=true&caKu=3"));
getRequest.addHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString());
getRequest.addHeader("xxx","xxx");
getRequest.addHeader("xxx","xxx");
String result = null;
try {
CloseableHttpResponse response = httpClient.execute(getRequest);
if (response == null || response.getStatusLine() == null || response.getStatusLine().getStatusCode() !=200) {
return null;
}
String responseBody = EntityUtils.toString(response.getEntity(), Charset.defaultCharset());
result = responseBody;
} catch (ClientProtocolException e) {
System.out.println("接口调用异常:"+e);
System.out.println(ExceptionUtils.getStackTrace(e));
} catch (IOException e) {
System.out.println("接口调用异常:"+e);
System.out.println(ExceptionUtils.getStackTrace(e));
} finally {
if (httpClient != null) {
try {
httpClient.close();
} catch (IOException e) {
System.out.println("关闭httpclient失败:");
System.out.println(ExceptionUtils.getStackTrace(e));
}
}
}
return result;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】