`

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. 实验性...

    JAVA-用HttpClient来模拟浏览器GET,POST.docx

    最后,我们读取了服务器返回的响应结果,并将其输出到控制台。 在下面的章节中,我们将继续介绍如何使用HttpClient库来模拟浏览器的POST请求,并讨论一些常见的问题,例如Cookie的处理和HTTPS的支持。 2. 使用...

    httpclient多线程下载(分段下载)实践

    如果某个线程在下载过程中出现问题,如网络中断,我们可能需要重新启动该线程或者整个下载任务。同时,为了防止内存溢出,通常会采用流式处理,避免一次性加载整个文件到内存中。 总之,利用HTTPClient进行多线程...

    用HttpClient来模拟浏览器GET POST

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

    Android使用HttpClient上传文件到服务器完整实例

    这通常涉及解析接收到的多部分数据,将文件保存到服务器的某个位置,并返回相应的反馈信息。 需要注意的是,由于Android API 23以后HttpClient被弃用,推荐使用`OkHttp`或者`Retrofit`等现代的网络库进行文件上传。...

    HttpClient_canalvwb_qthttpserver_levell6x_use_httpclient_

    - 处理器可以解析HttpClient发送过来的请求,执行相应的业务逻辑,然后构造响应并返回给HttpClient。 5. **异常处理和性能优化**: - 在发送请求和处理响应时,要处理可能出现的IOException和其他异常。 - 考虑...

    android 常用工具类

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

    Android HttpClientDemo

    响应对象`HttpResponse`包含了服务器返回的状态码、头信息以及实体内容,可以通过`EntityUtils`类进行解析。 在Android中,网络操作必须在工作线程中执行,以避免阻塞UI线程。通常我们会使用`AsyncTask`或者`...

    http 读取URL图片

    `openStream()`方法则可以打开一个到此URL引用的资源的连接,并返回一个输入流,以便读取该资源。 ### 输入流与输出流 - `BufferedInputStream`:这是Java提供的一个过滤输入流,它使用内部缓冲区来提高性能。在...

    Spring中@Scheduled和HttpClient的连环坑

    这段代码设置了连接、读取和请求超时时间均为3000毫秒,这样当服务器响应慢或无响应时,HttpClient会在规定时间内返回错误,避免任务被无限期挂起。 在实际开发中,除了关注`@Scheduled`和HttpClient的配置外,还应...

    C#的http发送post和get请求源码

    传入URL和创建的内容对象,同样返回一个`Task<HttpResponseMessage>`。 3. **C#中的HttpClient类**: - `HttpClient`是.NET Framework和.NET Core中的核心类,负责处理HTTP通信。它提供了异步的API,能够方便地...

    java模拟淘宝登录源码

    `a101790e81f74b379bec3bc769bc8219`可能是源码文件的哈希值或者是某个特定的资源文件,具体用途可能与源码的实现细节有关。 在实际开发中,需要注意安全性问题,如避免明文传输密码,使用HTTPS协议保证通信安全,...

    c# http请求模拟

    如果响应状态码表示成功,我们将读取并返回响应内容;否则,抛出异常。 在`TestHttpPost`这个例子中,你可能有一个测试场景,比如模拟向某个API发送JSON数据并验证响应。你可以创建一个包含实际数据的JSON字符串,...

    java发送url请求获取返回值的二种方法

    通过输入流读取服务器返回的数据,通常可使用`BufferedReader`和`StringBuilder`来处理。 9. **关闭资源**: 完成读取后,记得关闭所有打开的流和连接。 这两种方法各有优缺点。HttpClient提供了更高级的功能和...

    Web Api 通过文件流 下载文件到本地实例

    通过分析这个项目,你可以看到如何在`Controllers`目录下的某个控制器类中实现文件下载的方法,以及如何配置路由来确保客户端可以通过正确的URL访问这个服务。你还可以学习到如何在`Global.asax.cs`或`Startup.cs`中...

    C#调用Rest API.7z

    4. **处理响应**:HttpClient返回的HttpResponseMessage对象包含了响应的状态码、头信息和内容。你可以通过调用ReadAsStringAsync等方法读取响应体,然后根据需要反序列化为对象。 5. **使用Flurl库**:虽然...

    Android静默安装常用工具类

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

    C#异步方法_await_异步_async_

    // 等待读取响应内容 } } ``` 在这个例子中,`DownloadStringAsync`方法使用`HttpClient`下载一个网页内容。`GetAsync`和`ReadAsStringAsync`方法都返回`Task`对象,因此我们可以使用`await`关键字来等待它们的...

    .net生成静态页源码

    4. **保存到文件**:最后,将捕获的HTML内容写入到服务器的某个目录下,文件名通常与URL相关联,例如,URL为“/Home/About”可以对应名为“Home_About.html”的文件。 5. **处理动态内容**:静态化过程中,需要特别...

    CXF之二(上传及下载附件)

    在服务端,我们读取指定的文件,然后将其内容以流的形式返回给客户端。客户端接收到响应后,可以将其保存到本地。 6. **安全与性能考虑**: 实现文件上传和下载时,安全性和性能优化是关键。确保对上传文件进行...

Global site tag (gtag.js) - Google Analytics