返回
顶部

修改密码

首页 > 教程 > 网络通信 > HTTP > 正文
Android HttpClient多线程

+1

-1

收藏

+1

-1

点赞0

评论0

关于HttpClient的使用:1、如果应用程序需要执行多个HTTP调用,则应该创建一个为所有HTTP请求服务的HttpClient,可以将HttpClient关联到Android的应用程序对象中2、HttpClient同时发出多个请求可能引起的多线程问题,可以使用ThreadSafeClientConnManager创建DefaultHttpCli…

关于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">

扫一扫在手机打开

评论
已有0条评论
0/150
提交
热门评论
相关推荐
今日要闻
换一批
热点排行