好记心不如烂笔头,今天看书看到这个知识,记录一下
Apache接口的核心功能时HttpClient,与网络有关的功能几乎都要用到HttpClient,我们可以把HttpClient想象成一个浏览器,通过它的API可以很方便的发出get和post请求
在项目中一般讲HttpClient写成单例模式。
public class CustomerHttpClient {
private static final String CHARSET = HTTP.UTF_8;
private static HttpClient customerHttpClient;
private CustomerHttpClient() {
}
public static synchronized HttpClient getHttpClient() {
if (customerHttpClient == null) {
HttpParams params = new BasicHttpParams();
// 设置一些参参数
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);
HttpProtocolParams
.setUserAgent(
params,
"Moailla/5.0(Linux;U;Android 3.0;en-us;Nexus One Build.FRG83)"
+ "AppleWebkit/553.1(KHTML like Gecko) Version/4.0 Mobile Safari/533.1");
// 超时设置
/**
* 从连接池取连接的超时时间
*/
ConnManagerParams.setTimeout(params, 1000);
/**
* 连接超时
*/
HttpConnectionParams.setConnectionTimeout(params, 2000);
/**
* 请求超时
*/
HttpConnectionParams.setSoTimeout(params, 4000);
// 设置支持http和https两种模式
SchemeRegistry schgty = new SchemeRegistry();
schgty.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
schgty.register(new Scheme("https", SSLSocketFactory
.getSocketFactory(), 443));
// 使用线程安全的连接管理来创建HTTPClient 重要,否则在多线程中调用HttpClient程序会报错崩溃
ClientConnectionManager connectionManager = new ThreadSafeClientConnManager(
params, schgty);
customerHttpClient = new DefaultHttpClient(connectionManager,
params);
}
return customerHttpClient;
}
}