httpclient 具体解释——第一章;

httpclient 具体解释——第二章;

httpclient 具体解释——第三章;

httpclient 具体解释——第四章;

httpclient 具体解释——第五章;

httpclient 具体解释——第六章;

httpclient 具体解释——第七章;

相对于httpurlconnection ,httpclient更加丰富,也更加强大,当中apache有两个项目都是httpclient,一个是commonts包下的,这个是通用的,更专业的是org.apache.http.包下的,所以我一般用后者;

httpclient能够处理长连接,保存会话,重连接,以及请求过滤器,连接重用等等...

以下是測试代码(所有总结来自官方文档,以及翻译)

需要下载核心包:httpclient-4.3.4.jar ,也可在官网下载:http://hc.apache.org/downloads.cgi

//--------------------------  高速API ---------------------------------

	/**
* 高速api仅仅提供最主要的功能,仅仅用于不需要灵活扩展的场景
*/
private static void test22() throws ClientProtocolException, IOException{ String result = Request.Get("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getDatabaseInfo")
.connectTimeout(1000)//设置server请求超时
.socketTimeout(1000)//设置server对应超时
.execute()
.returnContent()
.asString(); String result2 = Request.Post("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getDatabaseInfo")
.useExpectContinue()
.version(HttpVersion.HTTP_1_1)
.bodyString("參数", ContentType.DEFAULT_TEXT)
.execute()
.returnContent()
.asString(); //提交HTML表单 ,并保存返回结果
Request.Post("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getDatabaseInfo")
.addHeader("X-Custom-header", "stuff") // 表单头
.viaProxy(new HttpHost("myproxy", 8080)) // 设置代理
.bodyForm(Form.form() //表单
.add("mobileCode", "12345")
.add("userID", "123456")
.build())
.execute()
.saveContent(new File("result.txt")); System.out.println(result);
System.out.println(result2); } /**
* 利用Executor 高速开发;
* 假设需要在指定的安全上下文中运行某些请求,我们也能够直接使用Exector,
* 这时候用户的认证信息就会被缓存起来,以便兴许的请求使用。
*/
private static void test23() throws ClientProtocolException, IOException{ Executor executor = Executor.newInstance()
.auth(new HttpHost("somehost",8080), "username", "password")//加入认证
.authPreemptive(new HttpHost("somehost", 8080)); //使用抢先认证 executor.execute(Request.Get("http://somehost/"))//运行get请求
.returnContent().asString(); executor.execute(Request.Post("http://somehost/") //运行post请求
.useExpectContinue()
.bodyString("Important stuff", ContentType.DEFAULT_TEXT))
.returnContent().asString(); } /**
*
* 高速响应处理
*
* 利用request高速发送get请求,并用ResponseHandler 回调返回结果;
*/
private static void test24() throws ClientProtocolException, IOException { Object result = Request .Get("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getDatabaseInfo")
.execute().handleResponse(new ResponseHandler<Object>() { public Object handleResponse(final HttpResponse response) throws IOException { StatusLine statusLine = response.getStatusLine(); if(statusLine.getStatusCode()==200){ HttpEntity entity = response.getEntity();
if (entity != null) {
String str = EntityUtils.toString(entity);
return str;
}
} return null;
} }); if (result != null) {
System.out.println(">>>>>>"+result);
} }

JAVA: httpclient 具体解释——第五章;的更多相关文章

  1. JAVA: httpclient 详细说明——第四章;

    httpclient 具体解释--第一章. httpclient 具体解释--第二章: httpclient 具体解释--第三章: httpclient 具体解释--第四章: httpclient 具 ...

  2. “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  3. 20165233 Java第八、十五章学习总结

    20165233 2017-2018-2 <Java程序设计>第六周学习总结 教材学习内容总结 ch08 基础:String类 重点:StringTokenizer类.Scanner类:获 ...

  4. 深入Java虚拟机读书笔记第五章Java虚拟机

    Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...

  5. Java编程基础篇第五章

    数组概述 概念:数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器.数组既可以存储基本数据类型,也可以存储引用数据类型.应用场景:为了存储同种数据类型的多个值 数组定义格式 格式1:元素类型 ...

  6. 读书笔记,《Java 8实战》第五章,使用流

    本章我们将会了解到关于Stream API的很多操作,这些操作能够完成很多复杂的查询,比如,比如筛选,切片,映射,查找,匹配和规约, 第一节,筛选和切片    首先我们来看看用谓词来选择流动的元素,主 ...

  7. 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理

    用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...

  8. 《码出高效 Java开发手册》第五章 异常与日志

    码云: https://gitee.com/forxiaoming/JavaBaseCode/blob/master/EasyCoding/src/exception/index.md 5.2 try ...

  9. Java入门 第一季第五章 编程练习解析

    这是我学习慕课网Java课程的笔记.原视频链接为:http://www.imooc.com/learn/85 5-1 基本写法 自己主动补全快捷键:alt + / 5-2 输入输出 使用Scanner ...

随机推荐

  1. 并发编程实践五:ReentrantLock

    ReentrantLock是一个可重入的相互排斥锁,实现了接口Lock,和synchronized相比,它们提供了同样的功能.但ReentrantLock使用更灵活.功能更强大,也更复杂.这篇文章将为 ...

  2. [C++]const修饰符

    Date: 2014-1-1 Summary: const 修饰符笔记 Contents: 1.const 修饰符 声明一个常量数据类型 , 在编译时就确定数据类型 2.const 与 指针 一般情况 ...

  3. VSTO 为Office已有右键菜单添加自己的菜单项(word,Excel)

    原文:VSTO 为Office已有右键菜单添加自己的菜单项(word,Excel) private void AddRightMenu()         {            Microsoft ...

  4. 对称加密算法DES,3重DES,TDEA,Blowfish,RC5,IDEA,AES。

    对称加密算法:DES,3重DES,TDEA,Blowfish,RC5,IDEA,AES. 1.对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文 ...

  5. OCP读书笔记(14) - 管理数据库性能

    搜集统计信息 1. dbms_stats gather_schema_stats 1)option:有四个选项: a.gather empty:只分析目前还没有搜集过统计信息的表 SQL> co ...

  6. 实现TextView 文字排版,分散两端对齐

    參考:http://www.cnblogs.com/lcyty/p/3265335.html 方法一:使用HTML TextView textview=(TextView)findViewbyId(R ...

  7. 华为C8816电信版ROOT过程

    华为C8816电信版ROOT方法, 网上的方法都不太靠谱.. 昨天弄了好久, 最终搞定.. 整理了一下.. 实用到的就方便多了. <方法不再啰嗦, 都有说明> 1. 获取手机解锁passw ...

  8. cpe移植framework后,。解决问题的现有数据库

    最近,该公司的业务需求,原始订单apk的形式CPE.渗透framework层.这被剥离cpe,从事相当长的一段,终于有时间来写博客,记下遇到的问题,未来. 第一个问题是,原来的apk有些事情,移植fr ...

  9. cocoa动态方法决议及消息转发

    假设给一个对象发送不能响应的消息,同一时候又没有进行动态方法决议,又没实现消息转发,那么就会引发以下的crash信息 2014-07-30 15:47:54.434 MethodNotFind[171 ...

  10. A First Exploration Of SolrCloud

    A First Exploration Of SolrCloud Update: this article was published in August 2012, before the very ...