HttpClient
官方简介:HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
Jar下载地址:http://hc.apache.org/downloads.cgi
使用步骤:
第一步:创建对象CloseableHttpClient httpClient = HttpClients.createDefault();
第二步:创建请求方式HttpGet httpGet = new HttpGet(url);或HttpPost httpPost = new HttpPost(url);
第三步:执行请求httpClient.execute(httpGet)或httpClient.execute(httpPost)
第四步:根据请求返回的状态码判断逻辑
第五步:可增加一些可选配置,如,RequestConfig requestConfig
HttpClient Get不带参数请求
package com.xm.httpclient;
import java.io.IOException;
import org.apache.http.HttpEntity;
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.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
/**
* java http get请求,不带参数
* @author ouyangjun
*/
public class HttpClientGet {
public static void main(String[] args) {
// httpclient get请求方法
String url = "";
requestHttpGet(url);
}
public static void requestHttpGet(String url){
CloseableHttpClient httpClient = null;
CloseableHttpResponse response = null;
try{
// 创建一个httpclient对象
httpClient = HttpClients.createDefault();
// http请求可选参数
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000) //设置连接超时时间
.setConnectionRequestTimeout(5000) // 设置请求超时时间
.setSocketTimeout(5000)
.setRedirectsEnabled(true)//默认允许自动重定向
.build();
// 创建一个Get请求,带url
HttpGet httpGet = new HttpGet(url);
httpGet.setConfig(requestConfig);
// 执行get请求
response = httpClient.execute(httpGet);
// 判断请求返回的状态码,200表示成功
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("请求返回的状态码: " + statusCode);
if(statusCode == 200){
HttpEntity entity =response.getEntity();
String str = EntityUtils.toString(entity,"utf-8");
System.out.println("返回结果: " + str);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
response.close();
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
HttpClient Get带参数请求
package com.xm.httpclient;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpEntity;
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.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
/**
* java http get请求,带参数
* @author ouyangjun
*/
public class HttpClientGetWithParam {
public static void main(String[] args) {
// 请求路径
String url = "";
// 请求参数
Map<String, Object> paramsMap = new HashMap<String, Object>();
paramsMap.put("","");
// httpclient get请求,带参数
requestHttpGetWithParam(url, paramsMap);
}
public static void requestHttpGetWithParam(String url, Map<String, Object> paramsMap){
CloseableHttpClient httpClient = null;
CloseableHttpResponse response = null;
try{
// 创建一个httpclient对象
httpClient = HttpClients.createDefault();
// http请求可选参数
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000) //设置连接超时时间
.setConnectionRequestTimeout(5000) // 设置请求超时时间
.setSocketTimeout(5000)
.setRedirectsEnabled(true)//默认允许自动重定向
.build();
// 拼接Get请求参数
URIBuilder uriBuilder = new URIBuilder(url);
for (String key : paramsMap.keySet()) {
uriBuilder.addParameter(key, String.valueOf(paramsMap.get(key)));
}
// 创建一个Get请求,带url
HttpGet httpGet = new HttpGet(uriBuilder.build());
httpGet.setConfig(requestConfig);
// 执行get请求
response = httpClient.execute(httpGet);
// 判断请求返回的状态码,200表示成功
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("请求返回的状态码: " + statusCode);
if(statusCode == 200){
HttpEntity entity =response.getEntity();
String str = EntityUtils.toString(entity,"utf-8");
System.out.println("返回结果: " + str);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
response.close();
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
HttpClient Post带参数请求
package com.xm.httpclient;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
/**
* java http post请求,带参数
* @author ouyangjun
*/
public class HttpClientPost {
public static void main(String[] args) {
// 请求路径
String url = "";
// 请求参数
Map<String, Object> paramsMap = new HashMap<String, Object>();
paramsMap.put("","");
// httpclient post请求,带参数
requestHttpPostWithParam(url, paramsMap);
}
public static void requestHttpPostWithParam(String url, Map<String, Object> paramsMap){
CloseableHttpClient httpClient = null;
try{
// 创建一个httpclient对象
httpClient = HttpClients.createDefault();
// http请求可选参数
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000) //设置连接超时时间
.setConnectionRequestTimeout(5000) // 设置请求超时时间
.setSocketTimeout(5000)
.setRedirectsEnabled(true)//默认允许自动重定向
.build();
// 拼接post请求参数
List<NameValuePair> param = new ArrayList<NameValuePair>();
for (String key : paramsMap.keySet()) {
param.add(new BasicNameValuePair(key, String.valueOf(paramsMap.get(key))));
}
// 创建一个Get请求,带url
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig);
httpPost.setEntity(new UrlEncodedFormEntity(param, "UTF-8"));
// 执行get请求
HttpResponse response = httpClient.execute(httpPost);
// 判断请求返回的状态码,200表示成功
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("请求返回的状态码: " + statusCode);
if(statusCode == 200){
HttpEntity entity =response.getEntity();
String str = EntityUtils.toString(entity,"utf-8");
System.out.println("返回结果: " + str);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
HttpClient Post带Json参数请求
package com.xm.httpclient;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
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.util.EntityUtils;
/**
* java http post请求,带json参数
* @author ouyangjun
*/
public class HttpClientPostJson {
public static void main(String[] args) {
// 请求路径
String url = "";
// 请求参数
String jsonStr = "";
// httpclient post请求,带json参数
requestHttpPostWithParam(url, jsonStr);
}
public static void requestHttpPostWithParam(String url, String jsonStr){
CloseableHttpClient httpClient = null;
try{
// 创建一个httpclient对象
httpClient = HttpClients.createDefault();
// http请求可选参数
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000) //设置连接超时时间
.setConnectionRequestTimeout(5000) // 设置请求超时时间
.setSocketTimeout(5000)
.setRedirectsEnabled(true)//默认允许自动重定向
.build();
// 创建一个Get请求,带url
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig);
httpPost.setHeader("Content-Type","application/json");
httpPost.setEntity(new StringEntity(jsonStr, ContentType.create("application/json", "UTF-8")));
System.out.println("request entity param: " + EntityUtils.toString(httpPost.getEntity()));
// 执行get请求
HttpResponse response = httpClient.execute(httpPost);
// 判断请求返回的状态码,200表示成功
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("请求返回的状态码: " + statusCode);
if(statusCode == 200){
HttpEntity entity =response.getEntity();
String str = EntityUtils.toString(entity,"utf-8");
System.out.println("返回结果: " + str);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
本章完结,待续!
本文说明:该文章属于原创,如需转载,请标明文章转载来源
扫描二维码关注公众号,回复:
3195064 查看本文章