`
ipFire
  • 浏览: 122000 次
  • 性别: 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,不然很难突破限制!

相关推荐

Global site tag (gtag.js) - Google Analytics