栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

HttpClient1 - HttpClient用法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HttpClient1 - HttpClient用法

目录

1. HttpClient介绍

2. 创建工程

3. 发送HTTP POST请求

3.1 使用String形式参数构建Get请求

3.2 使用URI形式构建Get请求


1. HttpClient介绍

尽管JDK中有通过HTTP访问资源的API, 但其功能和灵活性受到限制。HttpClient隶属于Apache的HttpComponents项目,它提供了丰富和更高效的HTTP访问方式,主要特点如下:

1. 纯Java实现,支持HTTP1.0和HTTP1.1.

2. 支持HTTPS。

3. 支持通过CONNECT方法建立隧道连接。

4. 支持Basic,Digest和NTLM等鉴权方式。

5. 支持设置连接超时。

6. 源代码基于Apache许可协议,因此是免费开源的。

2. 创建工程

创建Maven工程,引入依赖如下。

    
        org.apache.httpcomponents
        httpclient
        4.5.9
    

3. 发送HTTP POST请求

实现步骤:

1. 通过HttpClients类的静态方法创建HTTP客户端。

2. 通过HttpGet实例化GET请求。其他的HTTP请求也有响应的类,如HttpDelete, HttpHead, HttpPost......

3. 构建Get请求

4. 通过HTTP客户端执行请求得到服务器响应,并且打印到控制台。

5. 捕获异常。

3.1 使用String形式参数构建Get请求

构建GET请求中,我们首先使用String形式。特点是语法简单,但结构不够清晰。遇到空格时,这种方式需要手动编码,手动把空格换成+ 号,如 " http://localhost:8080/mobilePhone?model=iphone+6S"

代码演示 

package http;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
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;
import sun.net.www.http.HttpClient;


public class TestGet {
    public static void main(String[] args) {
        String url = "http://localhost:8080/mobilePhone?model=iPhone+6S";
        CloseableHttpClient client = HttpClients.createDefault();
        HttpGet httpGet1 = new HttpGet(url);
        CloseableHttpResponse response = null;
        try {
            response = client.execute(httpGet1);
            System.out.println(EntityUtils.toString(response.getEntity()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果

3.2 使用URI形式构建Get请求

URI ( Uniform Resource Identifier), 统一资源标识符。 特点是结构清晰,但构建过程较为复杂,而且构建过程容易出错,导致URI语法异常。针对空格情况,这种方式可以自动编码。

如下案例我们可以看到,URI形式构建较为复杂。

package http;

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;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;


public class TestGet2 {
    public static void main(String[] args) {
        CloseableHttpClient client = HttpClients.createDefault();
        URI uri = null;
        try {
            uri = new URIBuilder().setScheme("http").setHost("localhost").setPort(8080).setPath("/mobilePhone")
                    .setParameter("model", "iPhone 6S").build();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        HttpGet httpGet2 = new HttpGet(uri);
        CloseableHttpResponse response = null;
        try {
            response = client.execute(httpGet2);
            System.out.println(EntityUtils.toString(response.getEntity()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/975673.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号