HttpClient读取页面的使用例子

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
一个更真实的例子看这里吧:
HttpClient使用例子:读取CSDN的投票列表并正则解析
处理的结果

截至2009年01月06日,CSDN参与人数最多的投票列表。

  1. package com.laozizhu.apache.httpclient;

  2. import java.net.Socket;

  3. import org.apache.http.ConnectionReuseStrategy;
  4. import org.apache.http.Header;
  5. import org.apache.http.HttpHost;
  6. import org.apache.http.HttpResponse;
  7. import org.apache.http.HttpVersion;
  8. import org.apache.http.impl.DefaultConnectionReuseStrategy;
  9. import org.apache.http.impl.DefaultHttpClientConnection;
  10. import org.apache.http.message.BasicHttpRequest;
  11. import org.apache.http.params.BasicHttpParams;
  12. import org.apache.http.params.HttpParams;
  13. import org.apache.http.params.HttpProtocolParams;
  14. import org.apache.http.protocol.BasicHttpContext;
  15. import org.apache.http.protocol.BasicHttpProcessor;
  16. import org.apache.http.protocol.ExecutionContext;
  17. import org.apache.http.protocol.HttpContext;
  18. import org.apache.http.protocol.HttpRequestExecutor;
  19. import org.apache.http.protocol.RequestConnControl;
  20. import org.apache.http.protocol.RequestContent;
  21. import org.apache.http.protocol.RequestExpectContinue;
  22. import org.apache.http.protocol.RequestTargetHost;
  23. import org.apache.http.protocol.RequestUserAgent;
  24. import org.apache.http.util.EntityUtils;

  25. /**
  26.  * HttpClient读取页面的使用例子
  27.  * @author 老紫竹(java2000.net)
  28.  *
  29.  */
  30. public class HttpGet {
  31.   public static void main(String[] args) throws Exception {

  32.     HttpParams params = new BasicHttpParams();
  33.     // HTTP 协议的版本,1.1/1.0/0.9
  34.     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
  35.     // 字符集
  36.     HttpProtocolParams.setContentCharset(params, "UTF-8");
  37.     // 伪装的浏览器类型
  38.     // IE7 是 
  39.     // Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)
  40.     //
  41.     // Firefox3.03
  42.     // Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
  43.     //
  44.     HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
  45.     HttpProtocolParams.setUseExpectContinue(params, true);

  46.     BasicHttpProcessor httpproc = new BasicHttpProcessor();

  47.     httpproc.addInterceptor(new RequestContent());
  48.     httpproc.addInterceptor(new RequestTargetHost());

  49.     httpproc.addInterceptor(new RequestConnControl());
  50.     httpproc.addInterceptor(new RequestUserAgent());
  51.     httpproc.addInterceptor(new RequestExpectContinue());

  52.     HttpRequestExecutor httpexecutor = new HttpRequestExecutor();

  53.     HttpContext context = new BasicHttpContext(null);
  54.     HttpHost host = new HttpHost("www.java2000.net"80);

  55.     DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
  56.     ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy();

  57.     context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
  58.     context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);

  59.     try {

  60.       String[] targets = { "/""/help.jsp" };

  61.       for (int i = 0; i < targets.length; i++) {
  62.         if (!conn.isOpen()) {
  63.           Socket socket = new Socket(host.getHostName(), host.getPort());
  64.           conn.bind(socket, params);
  65.         }
  66.         BasicHttpRequest request = new BasicHttpRequest("GET", targets[i]);
  67.         System.out.println(">> Request URI: " + request.getRequestLine().getUri());

  68.         context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
  69.         request.setParams(params);
  70.         httpexecutor.preProcess(request, httpproc, context);
  71.         HttpResponse response = httpexecutor.execute(request, conn, context);
  72.         response.setParams(params);
  73.         httpexecutor.postProcess(response, httpproc, context);

  74.         // 返回码
  75.         System.out.println("<< Response: " + response.getStatusLine());
  76.         // 返回的文件头信息
  77.         Header[] hs = response.getAllHeaders();
  78.         for (Header h : hs) {
  79.           System.out.println(h.getName() + ":" + h.getValue());
  80.         }
  81.         // 输出主体信息
  82.         System.out.println(EntityUtils.toString(response.getEntity()));
  83.         System.out.println("==============");
  84.         if (!connStrategy.keepAlive(response, context)) {
  85.           conn.close();
  86.         } else {
  87.           System.out.println("Connection kept alive...");
  88.         }
  89.       }
  90.     } finally {
  91.       conn.close();
  92.     }
  93.   }
  94. }

这个代码为httpClient自带的例子,可以借鉴的地方很多,我简单的改造了一下, 把文件头也输出了,大家随便看一下结果

>> Request URI: /
<< Response: HTTP/1.1 200 OK
Proxy-Connection:Keep-Alive
Connection:Keep-Alive
Transfer-Encoding:chunked
Via:1.1 GDATAISASERVER
Date:Tue, 06 Jan 2009 05:07:54 GMT
Content-Type:text/html;charset=UTF-8
Server:Apache/2.2.4 (Win32) mod_jk/1.2.26
Set-Cookie:JSESSIONID=AAF2386712151447598F72716A64F847; Path=/
Set-Cookie:JAVA2000_STYLE_ID=1; Domain=www.java2000.net; Expires=Thu, 08-Mar-2012 14:54:33 GMT; Path=/
Vary:Accept-Encoding
Keep-Alive:timeout=5, max=100

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">


后面的我就不写了... 那个 keep-alive对性能的影响还是很大的。
Caused by: java.lang.ClassNotFoundException: org.apache.http.ConnectionReuseStrategy Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/ConnectionReuseStrategy     at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:56) Caused by: java.lan... 阅读详情

相关推荐

uniapp设置app端设置 useragent 参数,和说明

uniapp设置app端设置 useragent 参数,和说明

橙-极纪元-JJYCheng 3093

【解决】java.lang.ClassNotFoundException

09-Aug-2021 22:26:45.876 涓ラ噸 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.filterStart 鍚姩杩囨护鍣ㄥ紓甯� java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter at org.apache.catalina.loader.Webapp

爱喝星冰乐的博客 1323

httpcore系列(二)理解httpcore发送请求的类对象

在阅读了httpcore系列(一)初识httpcore后,我们浅显地了解了发送http请求需要构建一个从客户端到服务端的Httprequest对象,接受一个从服务端到客户端的HttpResponse对象,然而我们并不清楚其中的缘由,接下来我将聊聊如何将Httprequest作为参数输入,HttpResponse作为结果返回的来龙去脉。 官方样例 我们看看官方给的同步GET请求样例,代码如下。 package org.apache.http.examples; import java.net.Socket;

weixin_38211176的博客 942

报错java.lang.ClassNotFoundException:org.apache.http.config.Lookup解决方式

报错java.lang.ClassNotFoundException:org.apache.http.config.Lookup解决方式 一、出错情况              最近项目调HTTP接口时出现java.lang.ClassNotFoundException: org.apache.http.config.Lookup这个错误。百度了下发现网上没有,最后自己看jar包依赖才解决的二、原...

愤怒的懒洋洋的博客 4万+

HttpClient使用GET方式通过代理服务器读取页面例子

import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; imp

黑菜妞妞的专栏 689

应用HttpClient读取网页或提交参数

源地址:http://blog.chinaunix.net/space.php?uid=244649&do=blog&id=2606347 开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于Jakarta的commons项目,Commons-httpclient项目就是专门设计来简化HTTP客户端与服务器进行各种通讯编程

Waleking的专栏 1294

浅谈httpClient使用总结

浅谈httpClient使用总结       目前C/S还是B/S结构的应用程序, HTTP 应该是最为广泛使用的协议了。在 Java 平台上,Java 标准库提供了 一个HttpURLConnection 类来支持 HTTP 通讯。不过 HttpURLConnection 本身的 API 不够友好,所提供的功能也有限。httpClien是一个实现http协议很多操作功能的组件,并且它支

谭倩倩 4992

httpClient使用例子

maven依赖: http://blog.java1234.com/blog/articles/247.html package cn.tongdun.preserver.etl; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.a...

雪儿的博客 293

HttpClient 4使用方法的几个例子

昨天整理了一下,发现这个东西确实不错。 HttpClient读取页面使用例子 HttpClient 4.0通过代理访问Https的代码例子 HttpClient使用GET方式通过代理服务器读取页面例子 HttpClient 4 使用POST方式提交普通表单数据的例子HttpClient 4处理文件上传的例子(MultipartEntity) httpcli

老紫竹的专栏 7980

使用HttpClient登录知乎获取返回页面信息

引言     HttpClientjava语言下一个支持http协议的客户端编程工具包,它实现了HTTP协议的所有方法,但是不支持JS渲染。我们在做一些小玩意时,有可能需要登录某些网站获取信息,那么HttpClient就是你的好帮手,废话不多说,进入实战。 一 登录的实际意义     在HTTP横行的今天,我们每天都要登录一些网站,那么登录的意义是什么呢?首先要对cookie要

Java我人生的技术博客 1万+

httpClient抓取页面的简易使用

本次用的httpClient版本是4.5.2,maven坐标如下所示:   org.apache.httpcomponents httpclient 4.5.2     此版本的httpClient中DefaultHttpClient()已经过时,应使用CloseableHttpClient hclient = HttpClients.createDefault();创建对象

hellomvn的博客 879

httpclient处理页面跳转

在JSP/Servlet编程中response.sendRedirect方法就是使用HTTP协议中的重定向机制。它与JSP中的的区别在于后者是在服务器中实现页面的跳转,也就是说应用容器加载了所要跳转的页面的内容并返回给客户端;而前者是返回一个状态码,这些状态码的可能值见下表,然后客户端读取需要跳转到的页面的URL并重新加载新的页面。就是这样一个过程,所以我们编程的时候就要通过HttpMethod.

dada360778512的专栏 1万+

HttpClient的相关例子

1、HttpClient使用GET方式通过代理服务器读取页面例子 import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpR

lin062854的专栏 2337

HttpClient使用例子:读取CSDN的投票列表并正则解析

这个属于前一个例子的实际应用版本,用来读取真实的页面并进行正则解析package com.laozizhu.apache.httpclient;import java.net.Socket;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.apache.http.ConnectionReuseStrat

老紫竹的专栏 3738

httpclient 例子

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpRespons

zjw11763的专栏 588
上一篇: Oracle笔记:Select For Update会产生2个锁
下一篇: 截至2009年01月06日,CSDN参与人数最多的投票列表。
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值