Part1-HttpClient快速入门案例
来源:互联网 发布:用手指舒服吗 知乎 编辑:程序博客网 时间:2024/06/05 10:08
前言
最近这段时间在学习爬虫方面的知识,接触了几个优秀的爬虫框架,也爬取了一些自己喜欢网站的信息。通过官网学习HttpClient的过程中,希望通过写此博客来巩固自己的学习,也为有需要的人提供学习帮助。系列文章内容主要为HttpClient官方文档的翻译以及个人理解。
Part1-HttpClient快速入门案例:本节官网文档
下载安装
- 不使用Maven的情况:jar包下载地址
- 使用Maven的情况:在pom.xml中添加以下依赖
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.4</version> </dependency>
快速入门案例
/** * * TODO 使用HttpClient原生API演示HTTP GET和POST请求的执行。 * * @author 寇爽 * @date 2017年12月17日 * @version 1.8 */public class QuickStart { public static void main(String[] args) throws Exception { // 创建带有默认配置的CloseableHttpClient实例。 CloseableHttpClient httpclient = HttpClients.createDefault(); try { // 创建一个HttpGet对象实例(如果是post请求则创建HttpPost对象实例) HttpGet httpGet = new HttpGet("http://httpbin.org/get"); // 使用默认上下文执行HTTP请求。 CloseableHttpResponse response1 = httpclient.execute(httpGet); // 底层的HTTP连接仍然由响应对象持有 // 为了确保对系统资源的正确处理,用户必须调用CloseableHttpResponse#close()。 // 注意,如果响应内容未被完全使用,则底层连接不能被安全重用,并将被连接管理器关闭和丢弃。 try { // 输出该响应的状态 System.out.println(response1.getStatusLine()); // 获得该响应的消息实体,如果有的话。实体是通过调用setEntity(HttpEntity entity)来提供的。 HttpEntity entity1 = response1.getEntity(); // 对响应主体做一些有用的事情并确保它被完全消耗掉 // EntityUtils工具类提供了很多静态的方法用来处理HttpEntity对象实例 EntityUtils.consume(entity1); //释放资源 } finally { response1.close(); } // 创建一个HttpPost对象实例,对应Post请求 HttpPost httpPost = new HttpPost("http://httpbin.org/post"); //创建ArrayList列表 //NameValuePair接口定义了用作 HTTP 消息元素的名称/值对参数。 List<NameValuePair> nvps = new ArrayList<NameValuePair>(); //BasicNameValuePair类为NameValuePair接口的基本实现类 //这里调用了BasicNameValuePair类的构造方法 nvps.add(new BasicNameValuePair("username", "vip")); nvps.add(new BasicNameValuePair("password", "secret")); //调用setEntity方法将实体与此请求关联。 //UrlEncodedFormEntity(nvps):通过参数列表创建具有默认编码方式的UrlEncodedFormEntity对象实例 httpPost.setEntity(new UrlEncodedFormEntity(nvps)); //执行http请求 CloseableHttpResponse response2 = httpclient.execute(httpPost); try { System.out.println(response2.getStatusLine()); HttpEntity entity2 = response2.getEntity(); // 对响应主体做一些有用的事情并确保它被完全消耗掉 EntityUtils.consume(entity2); //释放资源 } finally { response2.close(); } } finally { httpclient.close(); } }}
改版(同样的请求可以使用更简单、但不那么灵活的API来执行。)
//流畅的 API 使用户不必手动处理系统资源的分配, //但是在某些情况下, 需要在内存中缓冲响应内容Request.Get("http://targethost/homepage") .execute().returnContent();Request.Post("http://targethost/login") .bodyForm(Form.form().add("username", "vip").add("password", "secret").build()) .execute().returnContent();
HttpClient例子
官网提供的例子:展示了一些更复杂的行为。
HttpClient教程
官网提供的教程:给出了 HttpClient API 的详细的介绍, 这是按照 (有时不是很直观) HTTP 规范/标准编写的。副本也随发行版一起发送,另外还提供了 PDF 版本。
HttpClient Primer
官网提供的解释HttpClient使用范围的文档:本文的目的是为那些突然需要或想要实现一个自动化应用程序的人,这些应用程序通常是用浏览器完成的,但是却缺少后台来理解他们实际需要做什么。它提供了实现与web站点交互所需的步骤的指导,该程序设计用于与浏览器一起使用。
转载请注明转载地址。。。
阅读全文
0 0
- Part1-HttpClient快速入门案例
- Nodejs快速入门:PART1
- memo:HttpClient快速入门
- httpclient快速入门
- HttpClient介绍及入门案例
- hibernate快速入门案例
- Struts2的快速入门案例
- Struts1.X的快速入门案例
- struts1快速入门案例和细节说明
- 【JSF】快速入门案例(用户登录界面)
- Hibernate 4.3.11快速入门案例
- kafka快速入门,生产者与消费者案例
- AOP快速入门案例(一)
- AOP快速入门案例(二)
- AOP快速入门案例(三)
- AOP快速入门案例(四)
- Serialization入门读物---PART1
- HttpClient入门
- jdk下载
- JavaScript~对象的复制
- 单机运行 spark-shell错误
- 常用的正则表达式
- mysql 存emoji表情 utf8mb4
- Part1-HttpClient快速入门案例
- Spring MVC概述
- RxJava和RxAndroid
- Spring Cloud Sleuth Zipkin 升级使用
- Git中文版教程
- SQL 基本语法
- Spring+MyBatis常规整合
- 分类算法应用场景实例二十则
- 记录一次参加D2前端技术论坛的杭州之行