Httpclient介绍及使用

来源:互联网 发布:如何卸载mysql数据库 编辑:程序博客网 时间:2024/05/22 16:44

一、什么是httpclient

HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。现在地址http://hc.apache.org 打开要点时间,等待一会就行了。

二、功能介绍

以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页。
(1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自动转向
(3)支持 HTTPS 协议
(4)支持代理服务器等

三、导入依赖

需要把httpclient的jar包添加到工程中,并且在配置文件中添加依赖

        <!-- httpclient -->        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpclient</artifactId>        </dependency>

四、使用方法

1.使用httpclient执行get请求

@Test    public void doGet() throws Exception {        //创建一个httpclient对象        CloseableHttpClient httpClient = HttpClients.createDefault();        //创建一个GET对象        HttpGet get = new HttpGet("http://www.baidu.com");        //执行请求        CloseableHttpResponse response = httpClient.execute(get);        //取响应的结果        int statusCode = response.getStatusLine().getStatusCode();        System.out.println(statusCode);        HttpEntity entity = response.getEntity();        String string = EntityUtils.toString(entity, "utf-8");        System.out.println(string);        //关闭httpclient        response.close();        httpClient.close();    }

2.执行get请求带参数

public void doGetWithParam() throws Exception{        //创建一个httpclient对象        CloseableHttpClient httpClient = HttpClients.createDefault();        //创建一个uri对象        URIBuilder uriBuilder = new URIBuilder("http://www.sogou.com/web");        uriBuilder.addParameter("query", "晓太白");        HttpGet get = new HttpGet(uriBuilder.build());        //执行请求        CloseableHttpResponse response = httpClient.execute(get);        //取响应的结果        int statusCode = response.getStatusLine().getStatusCode();        System.out.println(statusCode);        HttpEntity entity = response.getEntity();        String string = EntityUtils.toString(entity, "utf-8");        System.out.println(string);        //关闭httpclient        response.close();        httpClient.close();    }

3.使用httpclient执行post请求

public void doPost() throws Exception {        CloseableHttpClient httpClient = HttpClients.createDefault();        //创建一个post对象        HttpPost post = new HttpPost("http://localhost:8082/httpclient/post.html");        //执行post请求        CloseableHttpResponse response = httpClient.execute(post);        String string = EntityUtils.toString(response.getEntity());        System.out.println(string);        response.close();        httpClient.close();    }

3.使用httpclient执行带参数的post请求

@Test    public void doPostWithParam() throws Exception{        CloseableHttpClient httpClient = HttpClients.createDefault();               //创建一个post对象        HttpPost post = new HttpPost("http://localhost:8082/httpclient/post.html");        //创建一个Entity。模拟一个表单        List<NameValuePair> kvList = new ArrayList<>();        kvList.add(new BasicNameValuePair("username", "zhangsan"));        kvList.add(new BasicNameValuePair("password", "123"));              //包装成一个Entity对象        StringEntity entity = new UrlEncodedFormEntity(kvList, "utf-8");        //设置请求的内容        post.setEntity(entity);             //执行post请求        CloseableHttpResponse response = httpClient.execute(post);        String string = EntityUtils.toString(response.getEntity());        System.out.println(string);        response.close();        httpClient.close();    }
原创粉丝点击