2017-04-19 84 views
0

我有以下代碼:執行之前,所有其他的httpClient執行都需要等待其他失敗執行先失敗嗎?

HttpHelper

public class HttpHelper { 
    public HttpEntity httpGet(String url){ 
     HttpClient httpclient = Client.getThreadSafeClient(); 
     HttpGet httpget = new HttpGet(url); 
     HttpResponse response; 
     try { 
      response = httpclient.execute(httpget); 
      // Examine the response status 
      Log.d(TAG, "Response status: " + response.getStatusLine().toString()); 
      HttpEntity entity = response.getEntity(); 
      return entity; 
     } catch (Exception e) { 
      Log.d(TAG, "error: " + e.getMessage()); 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 

客戶

public class Client { 
    public static DefaultHttpClient getThreadSafeClient() { 
     DefaultHttpClient client = new DefaultHttpClient(); 
     ClientConnectionManager mgr = client.getConnectionManager(); 

     HttpParams httpParameters = client.getParams(); 
     HttpConnectionParams.setConnectionTimeout(httpParameters, 10000); 
     HttpConnectionParams.setSoTimeout(httpParameters, 10000); 
     ConnManagerParams.setTimeout(httpParameters, 10000); 

     client = new DefaultHttpClient(
      new ThreadSafeClientConnManager(httpParameters, 
       mgr.getSchemeRegistry()), httpParameters); 

     return client; 
    } 
} 

我通過使用此代碼來調用它:

HttpHelper httpHelper = new HttpHelper(); 
HttpEntity entity = httpHelper.httpGet(url); 

然後我試圖調用url到http://www.google.com:81這是無法訪問。但是,所有呼叫都需要等待該呼叫先失敗,然後纔會執行。

任何人都可以建議如何解決這個問題?我知道它已被棄用,但請先忽略它。

回答

0

這不是HttpClient的錯,而是AsyncTask

我的AsyncTask不允許同時執行。

這裏是解決它的代碼:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
else 
    task.execute();