2013-01-16 40 views
1

我有一個方法(下)從我的android程序中的Web服務獲取數據。它適用於Android 2.2。但在4.x中,它會拋出一個異常,並顯示消息「Error Requesting API」。不知道哪個部分導致我的代碼中的異常,爲什麼只有在4.x有人可以給我一些指針?Android的HttpCleint工作在2.2但不是在4

 public static synchronized String performHTTPRequest(HttpUriRequest request) 
       throws ApiException, ParseException, IOException { 
      HttpClientWrapper cli=new HttpClientWrapper(); 
      HttpClient client; 
      try { 
       client=cli.getClient(); 
       HttpResponse response = client.execute(request); 
       // Check if server response is valid 
       StatusLine status = response.getStatusLine() ; 

      if (status.getStatusCode() != HTTP_STATUS_OK) { 
       throw new ApiException("Invalid response from server: " + status.toString()); 
      } 
      return EntityUtils.toString(response.getEntity()); 
     } catch (MalformedURLException e) { 
      throw new Error(e); 
     } catch (Exception cnrce) { 
      throw new ApiException("Error requesting API:"); 
     } 
    } 
+0

如果你知道造成異常的細節這將有助於..你應該添加到您的ApiException原因(底層除外),這樣就可以追查問題。 –

+0

感謝阿卡什和馬特的回答/評論。在akash的建議之後,我嘗試了一些注意事項,如果我在清單中使targetSdkVersion =「8」,該應用程序在版本3和更高版本中運行。 (NetworkOnMainThreadException在這種情況下,我不承擔)。我正在努力使它成爲一個異步任務。完成後,應發佈我的工作代碼(與異步任務)。 – zolio

回答

1

在4.0或以上版本的honeycomb中,您無法對ui線程執行任何http請求。 你需要在asynctask中執行這些。 編輯: Documentation

Code example for asynctask

+0

謝謝阿卡什。你有任何示例代碼可以幫助我做出asynctask嗎?或者任何可以提供幫助的文件?再次感謝 – zolio

+0

看到我編輯的答案 – skygeek

+0

謝謝阿卡什。文檔和代碼示例的鏈接非常好。 – zolio

相關問題