`
ipFire
  • 浏览: 122601 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

HttpClient 多线程

阅读更多

关于HttpClient的使用

1.如果应用程序需要执行多个HTTP调用,则应该创建一个为所有HTTP请求服务的HttpClient,可以将HttpClient关联到Android的应用程序对象中

 

2.HttpClient同时发出多个请求可能引起的多线程问题,可以使用ThreadSafeClientConnManager创建DefaultHttpClient

 

主要代码:

public class ApplicationHc extends Application{
	
	private static final String TAG = "ApplicationHc";
	private HttpClient httpClient;
	
	@Override
	public void onCreate() {
		super.onCreate();
		httpClient = createHttpClient();
	}
	
	@Override
	public void onLowMemory() {
		super.onLowMemory();
		shutdownHttpClient();
	}
	
	@Override
	public void onTerminate() {
		super.onTerminate();
		shutdownHttpClient();
	}
	
	//创建HttpClient对象
	private HttpClient createHttpClient(){
		Log.i(TAG, "Create HttpClient...");
		
		HttpParams params = new BasicHttpParams();
		HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
		HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
		HttpProtocolParams.setUseExpectContinue(params, true);
		
		SchemeRegistry schReg = new SchemeRegistry();
		schReg.register(new Scheme("http",PlainSocketFactory.getSocketFactory(),80));
		schReg.register(new Scheme("https",SSLSocketFactory.getSocketFactory(),443));
		
		ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);
		
		return new DefaultHttpClient(conMgr,params);
	}
	
	//关闭HttpClent
	private void shutdownHttpClient(){
		if(httpClient !=null && httpClient.getConnectionManager()!=null){
			httpClient.getConnectionManager().shutdown();
		}
	}
	
	public HttpClient getHttpClient(){
		return httpClient;
	}
}

 在Activity中使用:

private String getHttpContent(){
		String con = null;
		try{
			ApplicationHc  app= (ApplicationHc)this.getApplication();
			HttpClient client = app.getHttpClient();
			HttpGet get = new HttpGet();
			get.setURI(new URI("http://www.google.com/ig/api?weather=Guangzhou"));
			HttpResponse response = client.execute(get);
			
			con = EntityUtils.toString(response.getEntity());
		}catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}

 

修改AndroidManifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name= ".ApplicationHc">
 
分享到:
评论
1 楼 kaki 2012-01-08  
有没有方法伪造IP,不然很难突破限制!

相关推荐

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

    本篇文章将深入探讨如何使用HTTPClient进行多线程分段下载的实践。 首先,我们要理解多线程下载的基本原理。多线程下载是通过将大文件分割成多个小段,每个线程负责下载一个或多个段,这样可以充分利用多核处理器的...

    httpclient著名的多线程框架

    《HttpClient:强大的多线程框架在Android中的应用》 在移动开发领域,尤其是Android平台,与服务器进行数据交互是不可或缺的一部分。HttpClient作为一个历史悠久且功能强大的HTTP客户端库,它以其丰富的特性和灵活...

    android 学习笔记6-HttpClient 多线程下载 断点续传 进度条 源码关联

    4、多线程下载:使用RandomAccessFile输出流写 5、多线程下载-断点续传:使用临时文件记录当前下载的数据,下次读取文件开始下载 6、下载显示进度条-ProgressBar 7、在gitbub上面下载已经有支持断点续传功能的代码...

    用HttpClient写了一个多线程下载软件

    标题中的“用HttpClient写了一个多线程下载软件”意味着我们将探讨如何使用Apache HttpClient库来创建一个支持多线程的文件下载应用。HttpClient是一个强大的Java库,它提供了丰富的HTTP客户端功能,包括请求发起、...

    c#异步多线程http文件分块断点续传下载工具

    在C#中,我们可以使用`System.Net.WebClient`类或者自定义`HttpClient`实例来实现多线程下载。 异步编程是现代C#的一个重要特性,它允许我们在等待IO操作完成时,不阻塞主线程,提高程序的响应性。在下载工具中,...

    使用java的HttpClient实现多线程并发

    通过使用HttpClient的连接池和多线程,我们可以有效地并发执行HTTP GET请求,同时控制并发数量,避免过多的网络连接导致服务器压力过大。这种方式提高了请求效率,减少了资源消耗,并且遵循了最佳实践。

    httpclient工具

    本文将详细讲解如何使用HTTPClient进行POST请求,并探讨在多线程环境下的应用,以及与"Grabticket"这个场景相关的实践。 HTTPClient是由Apache基金会开发的一个开源库,它提供了强大的功能来执行HTTP请求,包括GET...

    HttpClient下载数据

    HttpClient下载数据 图片,string 使用get请求数据

    使用java实现http多线程下载

    简单实现的源码,不会自动判断断点恢复,需要手动注释掉相应代码。 博文链接:https://calmness.iteye.com/blog/220075

    多线程网络下载 经典案例源代码

    HttpClient多线程网络下载 经典案例源代码

    HttpClient+ Spring实现多线程

    标题 "HttpClient + Spring 实现多线程" 涉及到的是如何在Spring框架中使用Apache HttpClient库来创建一个支持多线程的HTTP客户端服务。Apache HttpClient是一个强大的HTTP客户端API,它提供了丰富的功能来处理HTTP...

    使用Apache HttpClient实现多线程下载的小例子

    在这个小例子中,我们将讨论如何利用HttpClient实现多线程下载,以提高文件下载效率。 首先,我们需要在项目中引入Apache HttpClient的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml ...

    C# Winform 多线程下载

    在C# Winform应用中实现多线程下载是一项常见的任务,尤其在处理大文件或需要提高下载速度的情况下。本文将详细讲解如何利用C#的多线程技术来创建一个Winform应用程序,实现高效的文件下载功能。 首先,我们需要...

    C#实现多线程下载文件

    在IT行业中,多线程是提高程序性能和利用系统资源的有效手段,特别是在处理I/O密集型任务如文件下载时。C#作为一种强大的编程语言,提供了丰富的多线程支持,使得开发者能够轻松地创建并管理多个执行线程。本文将...

    .NET HttpClient的有用实用程序。-.NET开发

    HttpClientGoodies.NET .NET HttpClient的一组有用的实用程序。 安装Install-Package HttpClientGoodies的用途是什么? 这些小而有用的实用程序将使HttpClient的生活变得更加轻松。HttpClientGoodies.NET一组.NET ...

    多线程访问网页测试

    多线程访问网页的部分,通常会使用到HttpClient或者WebClient类。HttpClient是.NET Framework 4.5及更高版本中推荐的HTTP客户端通信工具,它支持异步操作,非常适合多线程环境。程序可能会为每个数字创建一个新的...

    httpclient

    同时,需要注意HttpClient不是线程安全的,因此在多线程环境中,每个线程应有自己的HttpClient实例。 6. **处理重定向**: HttpClient默认会自动处理重定向,但你可以通过配置`RedirectStrategy`来改变这一行为。 ...

    C#多线程下载文件源码

    在多线程环境下,我们需要为每个线程创建一个独立的WebClient或HttpClient实例,以避免并发访问同一资源时可能出现的问题。 线程间的同步也是非常关键的一环。为了避免多个线程同时写入同一文件,可以使用Mutex、...

    commons-httpclient-3.1.jar

    HttpClient不是线程安全的,因此在多线程环境中,每个线程应拥有自己的HttpClient实例或连接管理器。 最后,Apache HttpClient与Apache Commons Codec和Apache Commons Logging紧密协作。 Commons Codec库提供了...

Global site tag (gtag.js) - Google Analytics