`
Franciswmf
  • 浏览: 800526 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

了解HttpClient、httpclient获取指定的网页

 
阅读更多
引用参考:
--HttpClient超时设置详解
http://blog.csdn.net/u011191463/article/details/78664896
--HttpClient 4.5版本设置连接超时时间
https://my.oschina.net/wallechen/blog/526642
--HttpClient PoolingClientConnectionManager 参数含义 
http://geniuszhe.blog.163.com/blog/static/11934682014102521241984/

package com.tender.news.crawler;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class HttpClientGet{
		public String getHtml(String url){
	    String result="";
//		String url="http://www.ahbc.com.cn/bulletin.aspx?ID=1";
		//构造HttpClient的实例
		HttpClient httpClient = new HttpClient();
		//创建GET方法的实例
		GetMethod getMethod = new GetMethod(url);
		//使用系统提供的默认的恢复策略
		getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
		new DefaultHttpMethodRetryHandler());
		//定义一个输入流
		InputStream ins = null;
		//定义文件流
		BufferedReader br =null;
		try {
		  //执行getMethod
		  int statusCode = httpClient.executeMethod(getMethod);
		  if (statusCode != HttpStatus.SC_OK) {
		  System.err.println("方法失败: "+ getMethod.getStatusLine());
		  }
		  //使用getResponseBodyAsStream读取页面内容,这个方法对于目标地址中有大量数据需要传输是最佳的。
		  ins = getMethod.getResponseBodyAsStream();
		  String charset = getMethod.getResponseCharSet();
		  System.out.println("编码是?"+charset);
		  if(charset.toUpperCase().equals("ISO-8859-1")){
		  charset = "gbk";
		  }
		  //按服务器编码字符集构建文件流,这里的CHARSET要根据实际情况设置
		  br = new BufferedReader(new InputStreamReader(ins,getMethod.getResponseCharSet()));
		  StringBuffer sbf = new StringBuffer();
		  String line = null;
		  while ((line = br.readLine()) != null)
		  {
		  sbf.append(line);
		  }
		  result = new String(sbf.toString().getBytes(getMethod.getResponseCharSet()),charset);
		  //输出内容
//		  System.out.println(result);
		  //服务器编码
	  System.out.println("服务器编码是:"+getMethod.getResponseCharSet());
		} catch (HttpException e) {
		  //发生致命的异常,可能是协议不对或者返回的内容有问题
		  System.out.println("请检查您所提供的HTTP地址!");
		  e.printStackTrace();
		} catch (IOException e) {
		  //发生网络异常
		  e.printStackTrace();
		} finally {
		  //关闭流,释放连接   
		try {
		ins.close();
		br.close();} 
		catch (IOException e) {
			e.printStackTrace();
		}
		getMethod.releaseConnection();
		}
		return result;
		}
	
}
分享到:
评论

相关推荐

    httpClient和htmlparse获取网页数据使用jar

    将HttpClient与HtmlParser结合,可以实现从指定URL获取HTML内容并进行解析。首先,使用HttpClient发起HTTP请求并获取响应,然后将响应内容传递给HtmlParser进行解析。例如: ```java CloseableHttpClient ...

    httpClient 调用远程接口 获取数据到本地文件夹

    在这个场景中,我们使用HttpClient来调用远程接口,从电信公司的网站获取可用的新手机号码信息,并将这些数据存储到本地文件中。以下是对这个过程的详细解释: 1. **HttpClient的基本使用**: HttpClient提供了一...

    Android源码之用HttpClient获取网页

    在Android中,使用HttpClient获取网页的基本步骤如下: 1. 创建HttpClient实例:首先,我们需要创建一个HttpClient对象,它是所有HTTP请求的起点。代码示例如下: ```java HttpClient httpClient = new ...

    使用HttpClient获取网页html源代码.zip

    在这个名为"使用HttpClient获取网页html源代码.zip"的压缩包中,包含了一个简单的示例项目——WebDataShow,用于演示如何使用HttpClient获取网页HTML。 首先,我们需要导入Apache HttpClient库。在Android Studio中...

    通过HTTPClient获取网络资源

    首先,我们需要了解`HttpClient`的基本用法。在Java中,创建一个`HttpClient`实例是获取网络资源的第一步。`HttpClient`提供了多种方法来创建请求,如`HttpGet`、`HttpPost`等,分别对应HTTP的GET和POST请求。以下是...

    HttpClient抓取网页Demo

    在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 首先,你需要在项目中引入HttpClient的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....

    httpClient调用远程接口获取数据到本地文件夹

    在这个例子中,我们使用HttpClient来调用远程接口,从电信公司的网站获取可用手机号码的数据,并将其存储到本地文件系统。以下是对这个过程的详细解释: 1. **HttpClient的引入与配置**: 首先,我们需要在项目中...

    C# 采值数据 获取指定网页的值 远程采值数据 文件

    标题中的"C# 采值数据 获取指定网页的值 远程采值数据 文件"涉及到的是使用C#编程语言从远程网页抓取数据的过程。在IT领域,这通常指的是网络爬虫或者网页抓取技术,是一种自动化获取网页内容的程序设计方式。在C#中...

    HttpClient以及获取页面内容应用

    压缩包中含有多个文档,从了解httpclient到应用。 httpClient 1httpClint 1.1简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持...

    Android例子源码使用HttpClient获取网页html源代码.zip

    总结来说,这个例子旨在帮助开发者了解如何在Android环境中使用HttpClient和URLConnection获取远程网页的HTML源代码,同时展示了在GBK编码环境下的处理方式。对于初学者来说,这是一个很好的起点,可以帮助他们理解...

    HttpClient3.1 学习整理

    为了更好地理解HttpClient3.1的使用,以下是一个简单的示例,展示了如何使用GET方法获取网页内容: ```java import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods....

    Httpclient所需jar包

    - **发送GET请求**:获取网页内容,或者获取API提供的数据。 - **发送POST请求**:提交表单数据,或者向RESTful API发送复杂的数据结构。 - **处理响应**:解析返回的HTML或JSON内容,提取所需信息。 - **设置请求头...

    HttpClient 调用WebService示例

    6. **执行请求并获取响应**: 使用HttpClient的`execute`方法执行请求,并捕获返回的`HttpResponse`: ```java HttpResponse response = httpClient.execute(httpPost); ``` 7. **处理响应**: 你可以读取响应状态...

    httpclient

    2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。 3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams ...

    httpClient 访问其他Web 获取信息

    标签中的"源码"意味着我们可能需要了解HttpClient的内部实现。Apache HttpClient的源代码提供了丰富的信息,帮助我们理解其工作原理,优化请求处理,甚至自定义某些行为。 至于"工具"标签,HttpClient可以被视为一...

    httpclient4.5 jar包

    《HttpClient 4.5:构建高效网络请求的利器》 HttpClient是Apache软件基金会下的一个开源项目,主要用于提供高效的、最新的、功能丰富的HTTP协议客户端编程工具包。HttpClient 4.5作为其重要的版本,针对Java开发者...

    ESP8266HTTPClient.zip

    然后创建一个HTTPClient对象,并指定目标URL,例如: ```cpp HTTPClient http; http.begin("http://example.com"); ``` 3. **发起GET请求**: GET请求是最简单的HTTP请求,用于从服务器获取资源。使用`...

    java使用HttpClient通过url下载文件到本地

    在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到本地。以下是对这个主题的详细阐述: 1. **HttpClient介绍**: HttpClient是一个Java库,支持HTTP/1.1协议以及部分HTTP/2特性。它提供了一组高级...

    httpclient4.0-jar

    《HttpClient 4.0:Java中的HTTP客户端库详解》 HttpClient是Apache软件基金会下的一个开源项目,主要用于处理HTTP协议的客户端编程...了解并熟练掌握HttpClient的使用,对于提升Java应用的网络通信效率具有重要意义。

Global site tag (gtag.js) - Google Analytics