Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android DefaultHttpClient 超時

android DefaultHttpClient 超時

編輯:關於Android編程

昨天看了一篇HttpClient的設置超時時間,本來以為今天到公司就能把問題給解決了。結果發現DefaultHttpClient沒有設置超時時間。然後繼續尋找,終於發現了DefaultHttpClient怎麼設置超時的了。

其實是在HttpConnectionParams裡設置的。我自己寫了一個繼承DefaultHttpClient的類,以後使用用這個就行了:

/**
 * 封裝超時的HTTPclient
 * @author wangfeng
 * @date date 2013-12-20 09:30:26
 */
public class MyHttpClient extends DefaultHttpClient{
	/**
	 * 獲取 HttpClient,主要是封裝了超時設置
	 * @param rTimeOut 請求超時
	 * @param sTimeOut 等待數據超時
	 * @return
	 */
	public DefaultHttpClient getHttpClient(int rTimeOut,int sTimeOut){
		BasicHttpParams httpParams = new BasicHttpParams();
		HttpConnectionParams.setConnectionTimeout(httpParams, rTimeOut);
		HttpConnectionParams.setSoTimeout(httpParams, sTimeOut);
		DefaultHttpClient client = new DefaultHttpClient(httpParams);
		return client;
	}
}

如何使用:

HttpPost httpRequest =new HttpPost(validateUrl);
		//Post運作傳送變數必須用NameValuePair[]陣列儲存

		//傳參數 服務端獲取的方法為request.getParameter("name")

		List params=new ArrayList();
		params.add(new BasicNameValuePair("username",userName));
		params.add(new BasicNameValuePair("password",password));	
		try{
			//發出HTTP request
			httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
			//取得HTTP response
			HttpResponse httpResponse = null;
			try{
				httpResponse=new MyHttpClient().getHttpClient(7000,7000).execute(httpRequest);
			}catch(Exception e){
				isNetError = true;
				System.out.println("netError");
			}


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved