ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HTTPClient示例分享

2022-07-21 23:31:28  阅读:172  来源: 互联网

标签:httpclient HttpGet 示例 null setParameter HTTPClient 分享 response HttpClient


转自:

http://www.java265.com/JavaCourse/202205/3545.html

下文笔者讲述HTTPClient的示例分享,如下所示

HttpClient简介

HTTPClient:
    是Apache旗下的产品,基于HttpCore
HttpClient的官方参照文档:http://hc.apache.org/httpcomponents-client-ga/tutorial/pdf/httpclient-tutorial.pdf

HttpClient使用步骤:
    1.创建一个CloseableHttpClient实例 
    2.找一个可用的链接(uri)
    3.执行httpclient.execute(uri)
    4.response.close()

HttpClient的特性及优点

1. 基于java语言,实现了Http1.0和Http1.1

2. 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)

3. 支持HTTPS协议

4. 通过Http代理建立透明的连接

5. 利用CONNECT方法通过Http代理建立隧道的https连接

6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案

7. 插件式的自定义认证方案。

8. 便携可靠的套接字工厂使它更容易的使用第三方解决方案

9. 连接管理器支持多线程应用。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。

10. 自动处理Set-Cookie中的Cookie

11. 插件式的自定义Cookie策略

12. Request的输出流可以避免流中内容直接缓冲到socket服务器

13. Response的输入流可以有效的从socket服务器直接读取相应内容

14. 在http1.0和http1.1中利用KeepAlive保持持久连接

15. 直接获取服务器发送的response code和 headers

16. 设置连接超时的能力

17. 实验性的支持http1.1 response caching

18. 源代码基于Apache License 可免费获取

   使用HttpClient访问指定url

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet("http://localhost/");
CloseableHttpResponse response = httpclient.execute(httpget);
try {
<...>
} finally {
response.close();
} 

例2:
spring中实例化CloseableHttpClient

 @Autowired(required=false)
private CloseableHttpClient httpClient;
 
然后在spring里建一个xml文件专门用于httpClient
关于URI的创建,官方提供了专门的api:

HttpClient provides URIBuilder utility class to simplify creation and modification of request URIs
 
URI uri = new URIBuilder()
.setScheme("http")
.setHost("www.google.com")
.setPath("/search")
.setParameter("q", "httpclient")
.setParameter("btnG", "Google Search")
.setParameter("aq", "f")
.setParameter("oq", "")
.build();
HttpGet httpget = new HttpGet(uri);
 
HttpEntity entity = response.getEntity(); 

例3:
get请求的示例

public String doGet(String url,Map<String, String> params,String encode) throws Exception {
        if(null != params){
            URIBuilder builder = new URIBuilder(url);
            for (Map.Entry<String, String> entry : params.entrySet()) {
                builder.setParameter(entry.getKey(), entry.getValue());
            }
            url = builder.build().toString();
        }
        HttpGet httpGet = new HttpGet(url);
        httpGet.setConfig(requestConfig);
        CloseableHttpResponse response = null;
        try {
            response = httpClient.execute(httpGet);
            if (response.getStatusLine().getStatusCode() == 200) {
                if(encode == null){
                    encode = "UTF-8";
                }
                return EntityUtils.toString(response.getEntity(), encode);
            }
        } finally {
            if (response != null) {
                response.close();
            }
        }
        return null;
    }
 

标签:httpclient,HttpGet,示例,null,setParameter,HTTPClient,分享,response,HttpClient
来源: https://www.cnblogs.com/java265/p/16464046.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有