HttpClient使用

一:HttpClient简介.

      1.1  HttpClient基于Http协议,Java客户端发送请求更加容易便捷,调用第三方接口更加方便了,方便测试接口,提高开发效率,功能非常丰富的组件包.模拟用户使用浏览器请求网站,也可以用于爬取网页数据.

      1.2  HttpClient官网:链接.

     1.3 HttpClient官网教程:HttpClient教程.

  二  HttpClient使用.

          2.1 HttpClient引入依赖. 

<dependency>
   <groupId>org.apache.httpcomponents</groupId>
   <artifactId>httpclient</artifactId>
   <version>4.5.2</version>
</dependency>

         2.2 HttpClient简单获取网页首页Html代码.

         HttpClient的建立.面向接口编程.HttpClient执行请求.

     

import org.apache.http.HttpEntity;
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;
import java.io.IOException;
/**
 * author: 
 * date: 
 * time: 
 * description:
 */
public class HttpClientUtil {
    public static void main(String[] args) throws IOException {
        /** 创建httpClient实例*/
        CloseableHttpClient httpClient = HttpClients.createDefault();
        /** 创建httpget实例*/
        HttpGet httpGet = new HttpGet("http://www.baidu.com");
        /** 执行http get请求*/
        CloseableHttpResponse response = httpClient.execute(httpGet);
        /** 返回请求实体*/
        HttpEntity entity=response.getEntity();
        /** 获取网页内容*/
        System.out.println("网页内容:"+ EntityUtils.toString(entity, "utf-8"));
        /** 关闭response*/
        response.close();
        /** 关闭HttpClient*/
        httpClient.close();
    }
}

  运行结果如下:

    2.3 HttpClient获取响应状态.

   使用CloseableHttpResponse的getStatusLine().getStatusCode()得到响应状态码.

   getStatusLine().getProtocolVersion()获取使用的Http协议的版本.

   如果换个其他不存在的页面,就会报404错误的.有些服务器防止爬虫采集数据,如果频繁请求,就会报403拒绝请求的.服务器可以理解客户发来的请求,但是拒绝服务.

   2.4 HttpClient获取响应内容类型.

   使用HttpEntity的getContentType().getName()和getContentType().getValue().根据请求的不同返回不同的响应类型.

  2.5 HttpClient设置请求头消息user-agent模拟浏览器.获取User-Agent.浏览器F12可以NetWork查看一个网络请求即可.

例如我们使用HttpClient模拟浏览器访问一个站点. http://www.tuicool.com/

设置一下User-Agent头信息.添加如下.

2.6 HttpClient设置连接读取以及读取超时.

   比如连接国外网站,连接时间较长,读取内容比较多.这个时候我们设定时间,如果指定时间内没有连接,业务上就报错了.

   RequestConfig()用于请求设置.

  

  

RequestConfig config=RequestConfig.custom()
                .setConnectTimeout(5000)
                .setSocketTimeout(5000)
                .build();
httpGet.setConfig(config);

 2.7 HttpClient设置代理IP.

         HttpClient用于爬取网页的时候,有的网站有使用反爬虫机制,如果频繁访问站点以及规律性访问,网站会屏蔽IP的.

使用代理IP即可,使用高匿IP.网上有高匿IP可以使用.

HttpHost proxy=new HttpHost("IP", PORT).

RequestConfig requestConfig=RequestConfig.custom().setProxy(proxy).build();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道之简

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值