HttpClient 多线程
16lz
2021-01-26
关于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;@Overridepublic void onCreate() {super.onCreate();httpClient = createHttpClient();}@Overridepublic void onLowMemory() {super.onLowMemory();shutdownHttpClient();}@Overridepublic 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);}//关闭HttpClentprivate 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">
更多相关文章
- Android(安卓)Studio(一)介绍
- android 6.0sd卡内部存储 & 外部存储
- Activity and Task(一)
- Android(安卓)使用OKHttp获取字符串和下载图片
- 6.腾讯微博Android客户端开发——换取Access Token
- Android结合ButterKnife创建自己的BaseActivity(兼容6.0)
- 第2.3节 android目录中manifest的介绍
- Android(安卓)Studio--活动创建&简单布局
- android发送http请求—-URLConnection、HttpURLConnection的使用