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