转自:
http://www.java265.com/JavaCourse/202204/2934.html
HttpClient简介:
HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议
HttpClient是一个java语言编写的包, 我们使用HttpClient可以非常方便的发送Http请求,它使基于Http协议请求内容变得非常简单 ----------------------------------------------------------------------------------- HttpClient是Apache Jakarta Common下的子项目 它里面封装了很多使用http协议访问的工具,可用于高效访问http
HttpClient 提供的主要的功能
(1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自动转向
(3)支持 HTTPS 协议
(4)支持代理服务器等
下文笔者讲述编写一个HttpClient Utils工具类的简介说明,如下所示- package com.java265.httpcomponents;
-
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpHost;
- import org.apache.http.HttpResponse;
- import org.apache.http.NameValuePair;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.client.methods.HttpUriRequest;
- import org.apache.http.client.methods.RequestBuilder;
- import org.apache.http.conn.routing.HttpRoute;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClientBuilder;
- import org.apache.http.impl.client.HttpClients;
- import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
- import org.apache.http.message.BasicNameValuePair;
- import org.apache.http.util.EntityUtils;
-
- import java.io.IOException;
- import java.util.*;
-
- public class HttpClientUtils {
-
- private static PoolingHttpClientConnectionManager connectionManager = null;
- private static HttpClientBuilder httpBuilder = null;
- private static RequestConfig requestConfig = null;
-
- private static int MAXCONNECTION = 10;
-
- private static int DEFAULTMAXCONNECTION = 5;
-
- private static String IP = "cnivi.com.cn";
- private static int PORT = 80;
-
- static {
- //设置http的状态参数
- requestConfig = RequestConfig.custom()
- .setSocketTimeout(5000)
- .setConnectTimeout(5000)
- .setConnectionRequestTimeout(5000)
- .build();
-
- HttpHost target = new HttpHost(IP, PORT);
- connectionManager = new PoolingHttpClientConnectionManager();
- connectionManager.setMaxTotal(MAXCONNECTION);//客户端总并行链接最大数
- connectionManager.setDefaultMaxPerRoute(DEFAULTMAXCONNECTION);//每个主机的最大并行链接数
- connectionManager.setMaxPerRoute(new HttpRoute(target), 20);
- httpBuilder = HttpClients.custom();
- httpBuilder.setConnectionManager(connectionManager);
- }
-
- public static CloseableHttpClient getConnection() {
- CloseableHttpClient httpClient = httpBuilder.build();
- return httpClient;
- }
-
-
- public static HttpUriRequest getRequestMethod(Map<String, String> map, String url, String method) {
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- Set<Map.Entry<String, String>> entrySet = map.entrySet();
- for (Map.Entry<String, String> e : entrySet) {
- String name = e.getKey();
- String value = e.getValue();
- NameValuePair pair = new BasicNameValuePair(name, value);
- params.add(pair);
- }
- HttpUriRequest reqMethod = null;
- if ("post".equals(method)) {
- reqMethod = RequestBuilder.post().setUri(url)
- .addParameters(params.toArray(new BasicNameValuePair[params.size()]))
- .setConfig(requestConfig).build();
- } else if ("get".equals(method)) {
- reqMethod = RequestBuilder.get().setUri(url)
- .addParameters(params.toArray(new BasicNameValuePair[params.size()]))
- .setConfig(requestConfig).build();
- }
- return reqMethod;
- }
-
- public static void main(String args[]) throws IOException {
- Map<String, String> map = new HashMap<String, String>();
- map.put("account", "");
- map.put("password", "");
-
- HttpClient client = getConnection();
- HttpUriRequest post = getRequestMethod(map, "http://java265.com/userInfoGet", "post");
- HttpResponse response = client.execute(post);
-
- if (response.getStatusLine().getStatusCode() == 200) {
- HttpEntity entity = response.getEntity();
- String message = EntityUtils.toString(entity, "utf-8");
- System.out.println(message);
- } else {
- System.out.println("请求失败");
- }
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |