HttpComponents之httpclient基本使用方法

来源:互联网 发布:原生js模拟select 编辑:程序博客网 时间:2024/06/14 06:46

第一种方式

package http;import org.apache.http.HttpEntity;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.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class HttpClient2 {    public static void main(String args[]) throws IOException {        List<NameValuePair> formparams = new ArrayList<NameValuePair>();        formparams.add(new BasicNameValuePair("account", ""));        formparams.add(new BasicNameValuePair("password", ""));        HttpEntity reqEntity = new UrlEncodedFormEntity(formparams, "utf-8");        RequestConfig requestConfig = RequestConfig.custom()                .setSocketTimeout(5000)                .setConnectTimeout(5000)                .setConnectionRequestTimeout(5000)                .build();        HttpClient client = new DefaultHttpClient();        HttpPost post = new HttpPost("http://cnivi.com.cn/login");        post.setEntity(reqEntity);        post.setConfig(requestConfig);        HttpResponse response = client.execute(post);        if (response.getStatusLine().getStatusCode() == 200) {            HttpEntity resEntity = response.getEntity();            String message = EntityUtils.toString(resEntity, "utf-8");            System.out.println(message);        } else {            System.out.println("请求失败");        }    }}

第二种方式

这种方式是用了一个http的连接池,同时使用httpbuilder构造合适的http方法。

package http;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 httpBulder = 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);        httpBulder = HttpClients.custom();        httpBulder.setConnectionManager(connectionManager);    }    public static CloseableHttpClient getConnection() {        CloseableHttpClient httpClient = httpBulder.build();        httpClient = httpBulder.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://cnivi.com.cn/login", "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("请求失败");        }    }}

博文转自:https://my.oschina.net/xinxingegeya/blog/282683