`

HttpClient读取某个网址返回的内容

阅读更多

需要的核心Jar文件

 httpclient-4.0.1.jar:http://apache.freelamp.com/httpcomponents/httpclient/binary/httpcomponents-client-4.0.1-bin.zip
 httpcore-4.0.1.jar:http://apache.freelamp.com/httpcomponents/httpcore/binary/httpcomponents-core-4.0.1-bin.zip

 

Java测试代码:

 

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

public class ReadingWebContent {
	/**
	 * 返回内容字符串
	 * **/
	public static String getContent(String url) throws Exception{
		String backContent = null;
		//先建立一个客户端实例,将模拟一个浏览器
		HttpClient httpclient = null;
		HttpGet httpget = null;
		try {
			//************************************************************
			// 设置超时时间
			// 创建 HttpParams 以用来设置 HTTP 参数
			HttpParams params = new BasicHttpParams();
			// 设置连接超时和 Socket 超时,以及 Socket 缓存大小
			HttpConnectionParams.setConnectionTimeout(params, 180 * 1000);
			HttpConnectionParams.setSoTimeout(params, 180 * 1000);
			HttpConnectionParams.setSocketBufferSize(params, 8192);
			// 设置重定向,缺省为 true
			HttpClientParams.setRedirecting(params, false);
			//************************************************************   
			httpclient = new DefaultHttpClient(params);
//			httpclient = new DefaultHttpClient();
			// 建立一个get方法请求,提交刷新
			httpget = new HttpGet(url);		
			
			HttpResponse response = httpclient.execute(httpget); 
			//HttpStatus.SC_OK(即:200)服务器收到并理解客户端的请求而且正常处理了
//			if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
//				//对象呼叫中止
//				httpget.abort();
//				backContent = "获取不到";
//			}
			HttpEntity entity = response.getEntity();
			if (entity != null) {            
			    //start 读取整个页面内容
			    InputStream is = entity.getContent();
			    BufferedReader in = new BufferedReader(new InputStreamReader(is)); 
			    StringBuffer buffer = new StringBuffer(); 
			    String line = "";
			    while ((line = in.readLine()) != null) {
			    	buffer.append(line);
			    }
			    //end 读取整个页面内容
			    backContent = buffer.toString();
			}
		} catch (Exception e) {
			httpget.abort();
			backContent = "有异常,获取不到";	
			System.out.println("-------------异常开始");
			e.printStackTrace();
			System.out.println("-------------异常结束");
		}finally{
			//HttpClient的实例不再需要时,降低连接,管理器关闭,以确保立即释放所有系统资源
			if(httpclient != null)
				httpclient.getConnectionManager().shutdown();
		}        
        //返回结果
        return backContent;
	}
	
	@SuppressWarnings("static-access")
	public static void main(String[] args) throws Exception{
		ReadingWebContent a = new ReadingWebContent();
		System.out.println(a.getContent("http://www.google.com"));
	}
}

 

分享到:
评论

相关推荐

    HttpClient以及获取页面内容应用

    13. Response的输入流可以有效的从socket服务器直接读取相应内容。 14. 在http1.0和http1.1中利用KeepAlive保持持久连接。 15. 直接获取服务器发送的response code和 headers。 16. 设置连接超时的能力。 17. 实验性...

    用HttpClient来模拟浏览器GET POST

    本文会针对我们在编写HTTP客户端程序时经常碰到的几个问题进行分别介绍如何使用httpclient来解决它们,为了让读者更快的熟悉这个项目我们最开始先给出一个简单的例子来读取一个网页的内容,然后循序渐进解决掉前进中...

    android 常用工具类

    表示从json中读取某个String类型key的值 getMap(JSONObject jsonObject, String key) 得到map getMap(String jsonData, String key) 得到map 表示从json中读取某个Map类型key的值 Http网络工具类,主要包括...

    Android静默安装常用工具类

    表示从json中读取某个String类型key的值 getMap(JSONObject jsonObject, String key) 得到map getMap(String jsonData, String key) 得到map 表示从json中读取某个Map类型key的值 源码可见JSONUtils.java,更多...

    java jdk实列宝典 光盘源代码

    多种方式读文件内容, 按字节读取文件内容、按字符读取文件内容、按行读取文件内容、随机读取文件内容; 多种方式写文件内容, 按字节写文件内容、按字符写文件内容、按行写文件内容 ; 添加内容到文件结尾;文件的...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--文件之拷贝文件至某个目录 |--文件之指定编码读写文件 |--文件之释放Assets下的文件到应用的File目录 |--文件之随机存储RandomAccessFile |--文件使用时间排序 |--文件复制粘贴 |--文件路径之通过uri获取 |--时间...

    Android 开发技巧

    9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活JAVASCRIPT打开内部链接 266 9.43、清空手机COOKIES 267 9.44、检查SD卡是否存在并且可以写入 267 9.45、...

    Android开发资料合集-World版!

    9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活JAVASCRIPT打开内部链接 266 9.43、清空手机COOKIES 267 9.44、检查SD卡是否存在并且可以写入 267 9.45、...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    commons-httpclient.jar commons-logging.jar flex-messaging-common.jar flex-messaging-core.jar flex-messaging-proxy.jar flex-messaging-remoting.jar 在 web.xml 中添加 HttpFlexSession 和 ...

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    commons-httpclient.jar commons-logging.jar flex-messaging-common.jar flex-messaging-core.jar flex-messaging-proxy.jar flex-messaging-remoting.jar 在 web.xml 中添加 HttpFlexSession 和 Servlet...

Global site tag (gtag.js) - Google Analytics