• java+httpclient—— 一个简单的get请求


    package jkcs;
    
    import java.io.IOException;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    public class jiekoumoni 
    {
    
        public static void main(String[] args) throws ClientProtocolException, IOException 
        {
        
            
            CloseableHttpClient client = HttpClients.createDefault();    //创建一个http客户端
            
            
            
            HttpGet httpGet = new HttpGet("http://www.baidu.com"); // 通过httpget方式来实现我们的get请求
            
            
            
            
            CloseableHttpResponse Response = client.execute(httpGet); // 通过client调用execute方法,得到我们的执行结果就是一个response,所有的数据都封装在response里面了
            
            
            System.out.println(Response.getProtocolVersion());
            
            System.out.println(Response.getStatusLine());  //打印捕获的返回状态
            
            
            System.out.println(Response.getStatusLine().getStatusCode());    //打印捕获的状态码
            
            Response.close();  // 关闭
            
            
            
    
        }
    
    }

    执行结果:

     HTTP/1.1

    HTTP/1.1 200 OK

    200

     ===========================================================================================

    简介

    HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。
    HttpClient最新版本是HttpClient 4.5.3 (GA)。
    官方下载:http://hc.apache.org/downloads.cgi

    主要特性

    • 基于标准、纯净的Java语言,实现了HTTP1.0和HTTP1.1。
    • 以可扩展的面向对象的结构实现了HTTP全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。
    • 支持加密的HTTPS协议(HTTP通过SSL协议)。
    • 通过HTTP代理方式建立透明的连接。
    • 利用CONNECT方法通过HTTP代理建立隧道的HTTPS连接。
    • Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案。
    • 插件式的自定义认证方案。
    • 可插拔的安全套接字工厂,使得接入第三方解决方案变得更容易
    • 连接管理支持使用多线程的的应用。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。
    • 自动化处理Set-Cookie:来自服务器的头,并在适当的时候将它们发送回cookie。
    • 可以自定义Cookie策略的插件化机制。
    • Request的输出流可以避免流中内容体直接从socket缓冲到服务器。
    • Response的输入流可以有效的从socket服务器直接读取相应内容。
    • 在HTTP1.0和HTTP1.1中使用用KeepAlive来保持持久连接。
    • 可以直接获取服务器发送的响应码和响应头部。
    • 具备设置连接超时的能力。
    • 支持HTTP/1.1 响应缓存。
    • 源代码基于Apache License 可免费获取。

    一般使用步骤

    使用HttpClient发送请求、接收响应,一般需要以下步骤。
    HttpGet请求响应的一般步骤:
    1). 创建HttpClient对象,可以使用HttpClients.createDefault()


    2). 如果是无参数的GET请求,则直接使用构造方法HttpGet(String url)创建HttpGet对象即可;


        如果是带参数GET请求,则可以先使用URIBuilder(String url)创建对象,再调用addParameter(String param, String value)

        或setParameter(String param, String value)来设置请求参数,并调用build()方法构建一个URI对象。只有构造方法HttpGet(URI uri)来创建HttpGet对象。


    3). 创建HttpResponse,调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse

         调用HttpResponsegetAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;

         调用HttpResponsegetEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。

         

        程序可通过该对象获取服务器的响应内容。通过调用getStatusLine().getStatusCode()可以获取响应状态码。


    4). 释放连接。

    HttpPost请求响应的一般步骤:


    1). 创建HttpClient对象,可以使用HttpClients.createDefault()


    2). 如果是无参数的GET请求,则直接使用构造方法HttpPost(String url)创建HttpPost对象即可;


        如果是带参数POST请求,先构建HttpEntity对象并设置请求参数,然后调用setEntity(HttpEntity entity)创建HttpPost对象。


    3). 创建HttpResponse,调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse

        调用HttpResponsegetAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;

       调用HttpResponsegetEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。

       通过调用getStatusLine().getStatusCode()可以获取响应状态码。


    4). 释放连接。




    转载:链接:https://www.jianshu.com/p/375be5929bed

  • 相关阅读:
    JS中的call_user_func封装
    js中insertAdjacentHTML的玩法
    小tip: DOM appendHTML实现及insertAdjacentHTML
    js获取和设置属性的方法
    安装Yeoman,遇到的问题
    HTML中Select的使用详解
    jQuery Ajax异步处理Json数据详解
    chrome浏览器Uncaught TypeError: object is not a function问题解决
    SpringBoot Web实现文件上传下载功能实例解析
    SpringMVC Web实现文件上传下载功能实例解析
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12821828.html
Copyright © 2020-2023  润新知