HttpComponents (http 客户端) 常用类简介

http://hc.apache.org/

阿帕奇的开源项目。用于Http通信。

<dependency>
	<groupId>org.apache.httpcomponents</groupId>
	<artifactId>httpclient</artifactId>
	<version>4.5.1</version>
</dependency>

1.client

org.apache.http.client.HttpClient
接口。
CloseableHttpClient org.apache.http.impl.client.HttpClients.createDefault()
此方法可以拿到HttpClient对象。它是线程安全的。

2.request

org.apache.http.HttpRequest
接口。实现类有HttpGet、HttpPost等。
org.apache.http.client.methods.HttpUriRequest
继承了HttpRequest接口的接口。
void org.apache.http.message.AbstractHttpMessage.addHeader(String name, String value)
添加请求的头部信息。

org.apache.http.client.methods.HttpGet
代表HttpGet请求。
org.apache.http.client.methods.HttpPost
代表HttpPost请求。

2.1 get请求

org.apache.http.client.methods.HttpGet.HttpGet(String uri)
HttpGet请求的构造函数。

2.2 post请求

org.apache.http.client.methods.HttpPost.HttpPost(String uri)
HttpPost请求的构造函数。
org.apache.http.entity.StringEntity.StringEntity(String string) 
http报文body的格式是字符串。用于构造json、xml类post请求。

3.设置参数

Builder org.apache.http.client.config.RequestConfig.custom()

拿到builder。

Builder org.apache.http.client.config.RequestConfig.Builder.setSocketTimeout(int socketTimeout)

设置socket链接超时。

Builder org.apache.http.client.config.RequestConfig.Builder.setConnectionTimeout(int connectionRequestTimeout)

设置http连接超时。socket超时是http超时的充分不必要条件。

Builder org.apache.http.client.config.RequestConfig.Builder.setConnectionRequestTimeout(int connectionRequestTimeout)

设置请求发出前的超时时间。适用于用连接池,连接池占满的情况。

RequestConfig org.apache.http.client.config.RequestConfig.Builder.build()

至此拿到了RequestConfig 对象。

void org.apache.http.client.methods.HttpRequestBase.setConfig(RequestConfigconfig)
设置连接超时等在内的参数。RequestConfig对象的生成见下行。

RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(2000).build();

4.execute

CloseableHttpResponse org.apache.http.impl.client.CloseableHttpClient.execute(HttpUriRequest request) 
执行请求并返回结果,是同步函数,需要等待。

5.response

org.apache.http.client.methods.CloseableHttpResponse
接口。
StatusLine org.apache.http.HttpResponse.getStatusLine()
获取状态栏。
HttpEntity org.apache.http.HttpResponse.getEntity()
获取消息实体。
InputStream org.apache.http.HttpEntity.getContent()
获取内容。如果是文本数据,通常这样来拿。

Scanner scanner = new Scanner(instream, "utf-8");

void org.apache.http.util.EntityUtils.consume(HttpEntity entity) 
调用HttpEntity.getContent()就得到了InputStream,此方法用于把流消费完,然后关掉这个InputStream。

6.代码

时间: 2024-08-29 14:40:24

HttpComponents (http 客户端) 常用类简介的相关文章

Activiti常用类简介_java

Activiti项目是一项新的基于Apache许可的开源BPM平台,本文就来简述一下Activiti常用类.具体如下: 一.为什么要使用工作流 传统的设计在流程发生变化时的弊端: 1. 流程相关的属性和业务对象的属性,都放到了业务对象中. 2. 流程相关的逻辑和业务逻辑,都放到的业务逻辑中 Activiti常用类: ProcessEngineConfiguration 流程引擎配置对象(配置数据库连接信息和建表策略) ProcessEngine 流程引擎的核心对象(检查环境是否正确,管理各种服务

JAVA常用类库简介(转)

Java编程语言中为方便学习者学习,编制了许多类,这些类已经经过测试,都是我们编程的基础.如果不利用这些已存在的类,我们的编程工作将变得异常复杂并且效率低下.所以我们应尽可能多的掌握Java基本类库的内容.类库中的类按照其用途归属于不同的包中. 1.java.lang包 java.lang包 是Java中最常用的包,程序不需要注入,就可以使用该包中的类,利用包中的类可以设计最基本的Java程序. 2.java.awt包 java.awt包中的类提供了图形界面的创建方法,包括按钮.文本框.列表框.

马士兵J2SE-第六章-常用类-基本数据类型包装类、Maths类、File类

基本数据类型包装类 public class test { public static void main(String[] args) { Integer i=new Integer(100); Double d=new Double("123.456"); int j=i.intValue()+d.intValue(); float f=i.floatValue()+d.floatValue(); System.out.println(j); System.out.println(

JSP与JavaMail之2(常用类介绍)

js 3.JavaMail的常用类介绍  事先说明:  没用过JavaMail的人可能看不懂这些介绍,不过不要紧,后面的文章有具体的实例,到时也可倒回来查看这些类的用法.  (1) javax.mail.Properties类  JavaMail需要Properties来创建一个session对象.它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机.  用法:  Properties props = new Properties ();  props.put(&q

MemCached的PHP客户端操作类一

cache|客户端 MemCached的PHP客户端操作类一 <?php // // +---------------------------------------------------------------------------+ // | memcached client, PHP                                                     | // +--------------------------------------------

MemCached的PHP客户端操作类二

cache|客户端 MemCached的PHP客户端操作类二 <?php /*  * MemCached PHP client  * Copyright (c) 2003  * Ryan Gilfether <hotrodder@rocketmail.com>  * http://www.gilfether.com  *  * Originally translated from Brad Fitzpatrick's <brad@danga.com> MemCached Pe

.Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient)

client|web|多线程|客户端|下载 /* .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient) * Reflector 了一下 System.Net.WebClient ,重载或增加了若干: * DownLoad.Upload 相关方法! * DownLoad 相关改动较大! * 增加了 DataReceive.ExceptionOccurrs 事件! * 了解服务器端与客户端交互的 HTTP 协议参阅: * 使文件

使用.net framework中常用类在2.0版中的新功能

在上一篇<浏览.NET Framework 2.0 类型库中新增的常用功能>一文中我主要列了几个新增的常用主件,本文作为小结主要针对一些常用类的扩展来讲最近在使用C# 2.0 的时候发现的几个新特征,讲得不当之处请网友指正. 1.Exception异常基类在2.0下,Exception基类增加了Data属性,原型如下,public virtual IDictionary Data {get;}可见其实现了IDictionary接口,用来存储异常的自定义信息,由此想到在ExceptionMana

不引用服务而使用WCF,手动编写客户端代理类

前面我写过一个用WCF开发的聊天程序,大家可以翻看前面的博文. 在那个聊天程 序中,我是不引用服务而直接使用WCF.之前没有跟大家说这一知识点,对于初学者朋友来说 ,可能不知道怎么回事. 我们之所以说WCF比一般的Web Service要强大得多,是因为 它要比一般的Web服务要灵活得多,而且它不仅仅能在IIS服务器上运行,其实它可以用很多 种方法来运行,哪怕一个控制台应用程序. 现在,大家可以回忆一下前面我写的<传 说中的WCF>,我上面的例子绝大多数都是控制台应用程序类型的.我们应当把WC