展会信息港展会大全

Android HttpClient多线程
来源:互联网   发布日期:2015-09-28 16:23:22   浏览:2213次  

导读:关于HttpClient的使用:1、如果应用程序需要执行多个HTTP调用,则应该创建一个为所有HTTP请求服务的HttpClient,可以将HttpClient关联到Android的应用程序对象中2、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{

ApplicationHcapp= (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">

赞助本站

人工智能实验室

相关热词: HttpClient 多线程 线程

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港