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

摘要:
//实现我们的get请求CloseableHttpResponseResponse=客户端。通过httpGet方法执行(httpGet);所有数据都封装在响应System中。出来println(Response.getProtocolVersion());
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

免责声明:文章转载自《java+httpclient—— 一个简单的get请求》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇unable to recognize "*.yaml": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"[原][osg]osg程序窗口化、显示网格、状态信息下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用Mathjax网页插入公式

本文关于 想在网页里面插入公式,找到了 Mathjax,这里说怎么设置,具体来说是怎么在博客园设置。以及一点点如何使用。 设置方法 需要开通js的权限。 进入 设置。 在页脚Html代码输入: <script type="text/x-mathjax-config"> MathJax.Hub.Config({ displayAlign:...

el表达式具体解释

引用内容百度百科(http://baike.baidu.com/view/1488964.htm) 參考百度百科。然后自己又加入了一部分自己感觉实用的东西,整理一下希望对大家有所帮助! E L(Expression Language) 目的:为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供...

导出SQL Server中所有Job的最简单方法

应用场景: 在将源SQL Server数据库服务器中的所有Job(作业)迁移至目标数据库服务器的过程中,需要先将这些Job导出为SQL脚本。 操作步骤: 1、在Microsoft SQL Server Management Studio中,选择SQL Server Agent->Jobs,按F7打开Object Explorer Details窗口,...

AngularJs学习笔记3-服务及过滤器

    距离上次别博客有有一段时间了,因为最近公司和个人事情比较多,也因为学习新的知识所以耽搁了,也有人说Angularjs1.5没有人用了,没必要分享,我个人感觉既然开头了我就坚持把他写完,对一些还在使用或者维护项目的朋友能有一些帮助吧;     服务:服务提供能够在应用的整个生命周期保持数据的方法,它能在控制器之间通信,且能保持数据的一致性。    ...

自动化中Java面试题

1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变...

Android View 绘制流程之 DecorView 与 ViewRootImpl

一年多以前,曾经以为自己对 View 的添加显示逻辑已经有所了解了,事后发现也只是懂了些皮毛而已。经过一年多的实战,Android 和 Java 基础都有了提升,是时候该去看看 DecorView 的添加显示。 View 的绘制系列文章: Android View 绘制流程之 DecorView 与 ViewRootImpl Android View 的...