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 ...
随机推荐
- 如何在eclipse dump Java内存占用情况和打印GC LOG
当使用java开发应用程序发生内存泄露的时候,经常会需要dump内存,然后使用内存分析工具,比如Eclipse Memory Analyzer(一般称作MAT)工具. 本文将介绍如何在eclipse ...
- (并查集)POJ 1308 & HDU 1325
一开始以为两道题是一样的,POJ的过了直接用相同代码把HDU的交了,结果就悲剧了.最后发现HDU的没有考虑入度不能大于一. 题意:用树的定义来 判断吧,无环,n个结点最多有n-1条边,不然就会有环.只 ...
- 简体中文 — ANSI Common Lisp 中文版
简体中文 - ANSI Common Lisp 中文版 简体中文¶
- java反射机制 + Method.invoke解释 getMethod + 反射理解
功能: 通过读取另一个Dll去创建一个控件(Form,Button,TextBox,DataGridView),然后对当中一些属性进行检查. 创建控件的大致流程是,Assembly->Modul ...
- ISO-8859-1乱码恢复
为兼容较旧的jQuery插件,我把jQuery版本号从2.1.x降到了1.8.x,这比加入jquery-migration插件要来得干脆. 我没把这两个版本号的的区别一一记下来,而是直接改个版本号号. ...
- 拆分字符串,GetHtmlByWebBrowser,UnicodeToMBCS,提升进程权限
1. // 根据字符串,拆分字符串,相当于vb中的split函数 function SplitString(const Source, ch: string): TStringList; var te ...
- 设置Mysql的连接超时参数
在Mysql的默认设置中,如果一个数据库连接超过8小时没有使用(闲置8小时,即 28800s),mysql server将主动断开这条连接,后续在该连接上进行的查询操作都将失败,将 出现:e ...
- 依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦(转good)
依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦.所谓横切关注点,即影响应用多处的功能,这些功能各个应用模块都需要,但又不是其主要关注点,常见 ...
- Linux下一个简单的日志系统的设计及其C代码实现
1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...
- C++获取文件大小常用技巧
C++编程语言在程序开发应用中能够帮助我们轻松的完成许多功能需求.比如今天为大家介绍的C++获取文件大小的方法,就可以以多种方式轻松的实现.现在将会实现方法呈现给大家,以便大家参考. C++获取文件大 ...