Java爬虫入门简介(二) —— HttpClient详细使用方法

在上篇博客里面,我们讲述了如何使用HttpClient请求一个简单的网页。但是,在实际中,有很多网页的请求需要附带许多参数设置。主要包括请求的Header设置以及路径参数。在HttpClient 4.3及以上的版本中,这个过程主要包含如下步骤:

 
  
  1. 使用List<NameValuePair>添加路径参数(请求参数)
  2. 使用URI对请求路径及其参数进行设置
  3. 使用List<Header>设置请求的头部
  4. 初始化自定义的HttpClient客户端,并设置头部
  5. 使用HttpUriRequest设置请求
  6. 使用HttpClient请求上述步骤中的HttpUriRequest对象

我们看一个代码示例

 
  
  1. import com.google.common.collect.Lists;
  2. import org.apache.http.Header;
  3. import org.apache.http.HttpHeaders;
  4. import org.apache.http.HttpResponse;
  5. import org.apache.http.NameValuePair;
  6. import org.apache.http.client.HttpClient;
  7. import org.apache.http.client.methods.HttpUriRequest;
  8. import org.apache.http.client.methods.RequestBuilder;
  9. import org.apache.http.client.utils.URIBuilder;
  10. import org.apache.http.impl.client.HttpClients;
  11. import org.apache.http.message.BasicHeader;
  12. import org.apache.http.message.BasicNameValuePair;
  13. import java.io.IOException;
  14. import java.net.URI;
  15. import java.net.URISyntaxException;
  16. import java.util.List;
  17. /************
  18. * HttpClient 使用示例
  19. * ***********/
  20. public class HttpClientTest {
  21. public static void main(String[] args) throws URISyntaxException, IOException {
  22. String url = ""; //请求路径
  23. //构造路径参数
  24. List<NameValuePair> nameValuePairList = Lists.newArrayList();
  25. nameValuePairList.add(new BasicNameValuePair("username","test"));
  26. nameValuePairList.add(new BasicNameValuePair("password","password"));
  27. //构造请求路径,并添加参数
  28. URI uri = new URIBuilder(url).addParameters(nameValuePairList).build();
  29. //构造Headers
  30. List<Header> headerList = Lists.newArrayList();
  31. headerList.add(new BasicHeader(HttpHeaders.ACCEPT_ENCODING,"gzip, deflate"));
  32. headerList.add(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive"));
  33. //构造HttpClient
  34. HttpClient httpClient = HttpClients.custom().setDefaultHeaders(headerList).build();
  35. //构造HttpGet请求
  36. HttpUriRequest httpUriRequest = RequestBuilder.get().setUri(uri).build();
  37. //获取结果
  38. HttpResponse httpResponse = httpClient.execute(httpUriRequest);
  39. //获取返回结果中的实体
  40. HttpEntity entity = httpResponse.getEntity();
  41. //查看页面内容结果
  42. String rawHTMLContent = EntityUtils.toString(entity);
  43. System.out.println(rawHTMLContent);
  44. //关闭HttpEntity流
  45. EntityUtils.consume(entity);
  46. }
  47. }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值