JAVA: 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 具体解释——第五章;的更多相关文章
- JAVA: httpclient 详细说明——第四章;
httpclient 具体解释--第一章. httpclient 具体解释--第二章: httpclient 具体解释--第三章: httpclient 具体解释--第四章: httpclient 具 ...
- “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- 20165233 Java第八、十五章学习总结
20165233 2017-2018-2 <Java程序设计>第六周学习总结 教材学习内容总结 ch08 基础:String类 重点:StringTokenizer类.Scanner类:获 ...
- 深入Java虚拟机读书笔记第五章Java虚拟机
Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...
- Java编程基础篇第五章
数组概述 概念:数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器.数组既可以存储基本数据类型,也可以存储引用数据类型.应用场景:为了存储同种数据类型的多个值 数组定义格式 格式1:元素类型 ...
- 读书笔记,《Java 8实战》第五章,使用流
本章我们将会了解到关于Stream API的很多操作,这些操作能够完成很多复杂的查询,比如,比如筛选,切片,映射,查找,匹配和规约, 第一节,筛选和切片 首先我们来看看用谓词来选择流动的元素,主 ...
- 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理
用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...
- 《码出高效 Java开发手册》第五章 异常与日志
码云: https://gitee.com/forxiaoming/JavaBaseCode/blob/master/EasyCoding/src/exception/index.md 5.2 try ...
- Java入门 第一季第五章 编程练习解析
这是我学习慕课网Java课程的笔记.原视频链接为:http://www.imooc.com/learn/85 5-1 基本写法 自己主动补全快捷键:alt + / 5-2 输入输出 使用Scanner ...
随机推荐
- 窗体透明,但窗体上的控件不透明(简单好用)good
1.在Delphi中,设置窗体的AlphaBlend := true;AlphaBlendValue := 0-255; AlphaBlendValue越小窗体的透明度就越高.这种方法将会使窗体和窗体 ...
- 访问祖先类的虚方法(直接访问祖先类的VMT,但是这种方法在新版本中未必可靠)
访问祖先类的虚方法 问题提出 在子类覆盖的虚方法中,可以用inherited调用父类的实现,但有时候我们并不需要父类的实现,而是想跃过父类直接调用祖先类的方法. 举个例子,假设有三个类,实现如下: t ...
- vlan 以及 Linux实现的IEEE 802.1Q VLAN
vlan 以及 Linux实现的IEEE 802.1Q VLAN Vlan的概念 VLAN技术介绍 VLANVLAN概述 以太网是一种基于CSMA/CD(Carrier Sense Multiple ...
- dll导入导出资源文件查看工具 InspectExe
InspectExe lets you explore and diagnose problems with Win32 applications. It is integrated directly ...
- 为什么Lisp语言如此先进?(译文) - 阮一峰的网络日志
为什么Lisp语言如此先进?(译文) - 阮一峰的网络日志 为什么Lisp语言如此先进?(译文)
- gradle学习系列之eclipse中简单构建android项目
看不到图片能够去訪问这个网址看看:http://pan.baidu.com/s/1o6FrFkA 一.什么是Gradle 官网www.gradle.org上介绍Gradle是升级版(evolved)的 ...
- codeforces.com/contest/325/problem/B
http://codeforces.com/contest/325/problem/B B. Stadium and Games time limit per test 1 second memory ...
- Codeforces Round #350 (Div. 2)解题报告
codeforces 670A. Holidays 题目链接: http://codeforces.com/contest/670/problem/A 题意: A. Holidays On the p ...
- Inside Qt Series (全集)
Inside Qt 系列 QObject这个 class 是 QT 对象模型的核心,绝大部分的 QT 类都是从这个类继承而来.这个模型的中心特征就是一个叫做信号和槽(signaland slot)的机 ...
- [SVN]创建本地的SVN仓库
本地创建SVN仓库,就算是自己平时写代码也养成使用SVN的习惯. 环境: OS:Mac OS X10.9.1 SVN Version:1.7.10 创建本地SVN仓库: $svnadmin creat ...