`

HttpClient简介与实现

阅读更多
1. HttpClient简介

HttpClient官网:http://hc.apache.org/

HttpClient4.5:http://hc.apache.org/httpcomponents-client-4.5.x/

HttpClient官方文档:http://hc.apache.org/httpcomponents-client-4.5.x/tutorial/html/index.html

HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。

HTTP协议可能是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。虽然在JDK的javanet包中已经提供了访问HTTP协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。爬虫主要是用HttpClient模拟浏览器请求第三方站点url,然后响应,获取网页数据,然后用Jsoup来提取我们需要的信息。


2. HttpClient实现HelloWorld

New -> Project -> Maven Project -> Next ->
Create a simple project -> Next ->
    Group Id: com.andrew
    Artifact Id: HttpClientDemo
    Version: 0.0.1-SNAPSHOT
    Packaging: jar
    
pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.andrew</groupId>
  <artifactId>HttpClientDemo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.2</version>
    </dependency>
  </dependencies>
</project>

HelloWorld01.java

package com.andrew.httpClient;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HelloWorld01 {
    public static void main(String[] args) {
        CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建httpClient实例
        HttpGet httpGet = new HttpGet("http://www.csdn.net/"); // 创建httpget实例
        CloseableHttpResponse response = null;
        try {
            response = httpClient.execute(httpGet); // 执行http get请求
        } catch (ClientProtocolException e) { // http协议异常
            e.printStackTrace();
        } catch (IOException e) { // io异常
            e.printStackTrace();
        }
        HttpEntity entity = response.getEntity(); // 获取返回实体
        try {
            System.out.println("网页内容:" + EntityUtils.toString(entity, "utf-8")); // 获取网页内容
        } catch (ParseException e) { // 解析异常
            e.printStackTrace();
        } catch (IOException e) { // io异常
            e.printStackTrace();
        }
        try {
            response.close(); // response关闭
        } catch (IOException e) { // io异常
            e.printStackTrace();
        }
        try {
            httpClient.close(); // httpClient关闭
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

HelloWorld02.java

package com.andrew.httpClient;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HelloWorld02 {
    public static void main(String[] args) throws ClientProtocolException, IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建httpClient实例
        HttpGet httpGet = new HttpGet("http://www.csdn.net/"); // 创建httpget实例
        CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求
        HttpEntity entity = response.getEntity(); // 获取返回实体
        System.out.println("网页内容:" + EntityUtils.toString(entity, "utf-8")); // 获取网页内容
        response.close(); // response关闭
        httpClient.close(); // httpClient关闭
    }
}
分享到:
评论

相关推荐

    HttpClient以及获取页面内容应用

    一般而言,使用HttpClient均需导入httpclient.jar与httpclient-core.jar2个包。 1.4使用方法与步骤 开发环境:需要 使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。 1.创建HttpClient对象。 ...

    HttpClient介绍和使用

    1. HttpClient简介  官网地址: http://hc.apache.org/ HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的...

    simple-http:抽取一个简单 HTTP 的通用接口,底层实现根据具体引入依赖指定

    简介抽取一个简单 HTTP 的通用接口,底层实现根据具体引入依赖指定。&lt;dependency&gt; &lt;groupId&gt;com.xkcoding.http&lt;/groupId&gt; &lt;artifactId&gt;simple-http&lt;/artifactId&gt; &lt;version&gt;1.0.3&lt;/version&gt;&lt;/dependency&gt;特点默认会...

    Spring 实现远程访问详解——jms和activemq

    前几章我们分别利用spring rmi、httpinvoker、httpclient、webservice技术实现不同服务器间的远程访问。本章我将通过spring jms和activemq实现单Web项目服务器间异步访问和多Web项目服务器间异步访问。 一. 简介 1. ...

    低清版 大型门户网站是这样炼成的.pdf

    7.6.5 struts2与ajax完全结合实现点击数加一 510 7.7 基于httpclient构建通用静态页面发布引擎 514 7.7.1 优秀的模拟浏览器httpclient 514 7.7.2 构建通用静态页面发布引擎 516 7.8 小结 518 第8章 通用新闻...

    开涛高可用高并发-亿级流量核心技术

    1.3.4 状态与状态机 13 1.3.5 后台系统操作可反馈 14 1.3.6 后台系统审批化 14 1.3.7 文档和注释 14 1.3.8 备份 14 1.4 总结 14 第2部分高可用 17 2 负载均衡与反向代理 18 2.1 upstream配置 20 2.2 负载均衡算法 21...

    xutils3.1.0

    •HTTP实现替换HttpClient为UrlConnection, 更好的兼容Android 6.0, 自动解析回调泛型, 更安全的断点续传策略. •支持标准的Cookie策略, 区分domain, path... •事件注解去除不常用的功能, 提高性能. •数据库...

    大型分布式网站架构设计与实践.带目录书签.完整版.rar

    《大型分布式网站架构设计与实践》主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现、互联网安全架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容;深入地讲述了...

    大型分布式网站架构与实践

     1.2.3 通过HttpClient发送HTTP请求 16  1.2.4 使用HTTP协议的优势 17  1.2.5 JSON和XML 18  1.2.6 RESTful和RPC 20  1.2.7 基于HTTP协议的RPC的实现 22  1.3 服务的路由和负载均衡 30  1.3.1 服务化...

    疯狂Android讲义源码

     13.3.2 使用Apache HttpClient 501  13.4 使用WebView视图  显示网页 505  13.4.1 使用WebView浏览网页 506  13.4.2 使用WebView加载HTML  代码 507  13.5 使用Web Service进行  网络编程 508  13.5.1 Web...

    《Android应用开发揭秘》源码

     8.2.2 HttpClient接口  8.2.3 实时更新  8.3 Socket通信  8.3.1 Socket基础  8.3.2 Socket应用(简易聊天室)  8.4 网络通信的中文乱码问题  8.5 WebKit应用  8.5.1 WebKjt概述  8.5.2 WebView浏览网页  ...

    《Android应用开发揭秘》附带光盘代码.

     8.2.2 HttpClient接口  8.2.3 实时更新  8.3 Socket通信  8.3.1 Socket基础  8.3.2 Socket应用(简易聊天室)  8.4 网络通信的中文乱码问题  8.5 WebKit应用  8.5.1 WebKjt概述  8.5.2 WebView浏览网页  ...

    疯狂Android讲义.part1

    13.3.2 使用Apache HttpClient 501 13.4 使用WebView视图显示 网页 506 13.4.1 使用WebView浏览网页 506 13.4.2 使用WebView加载HTML 代码 507 13.5 使用Web Service进行网络 编程 508 13.5.1 Web Service简介 509 ...

    android开发揭秘PDF

    8.2.2 HttpClient接口 8.2.3 实时更新 8.3 Socket通信 8.3.1 Socket基础 8.3.2 Socket应用(简易聊天室) 8.4 网络通信的中文乱码问题 8.5 WebKit应用 8.5.1 WebKjt概述 8.5.2 WebView浏览网页 8.5.3 WebView与...

    Android应用开发揭秘pdf高清版

    8.2.2 HttpClient接口 8.2.3 实时更新 8.3 Socket通信 8.3.1 Socket基础 8.3.2 Socket应用(简易聊天室) 8.4 网络通信的中文乱码问题 8.5 WebKit应用 8.5.1 WebKjt概述 8.5.2 WebView浏览网页 8.5.3 WebView与Java ...

    xutils-3.1.0.jar包下载

    HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略. 2. 支持标准的Cookie策略, 区分domain, path... 3. 事件注解去除不常用的功能, 提高性能. 4. 数据库api简化提高性能, 达到和...

    xutils 3.1.2最新版本jar包下载

    HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略. 2. 支持标准的Cookie策略, 区分domain, path... 3. 事件注解去除不常用的功能, 提高性能. 4. 数据库api简化提高性能, 达到和...

Global site tag (gtag.js) - Google Analytics