2013-07-16 187 views
2

我試圖從Android向ASP.NET Web API發出GET請求。該API應該爲某些用戶返回一個JSON對象。當從瀏覽器調用API時,一切正常,但是當試圖從Androind應用程序調用時,什麼都不會發生。我已經看過Fiddler並且沒有發送任何請求。對ASP.NET Web API的Android請求

這是我用它來撥打電話代碼:

class GetData extends AsyncTask<String, String, String>{ 
     @Override 
     protected String doInBackground(String... params){ 
      HttpClient client = new DefaultHttpClient(); 
      HttpResponse response; 
      try{ 
      HttpGet get = new HttpGet("http://10.0.2.2:38216/api/user"); 
      response = client.execute(get); 
      if(response != null){ 
       InputStream inStream = response.getEntity().getContent(); 
       String message = convertToString(inStream); 
       return message; 
      } 
     } 
     catch(Exception exp){ 
      Log.d("Error message!", exp.toString()); 
     } 
     return null; 
    } 
} 

上,我做錯了什麼,將不勝感激任何意見或暗示!

+0

只是爲了確認,你是在仿真器上運行它,並且你的Web應用正在偵聽運行該仿真器的開發機器的'localhost'?如果是,那麼LogCat會顯示異常和堆棧跟蹤?另外,你確定你正在執行這個任務嗎? – CommonsWare

+0

我從模擬器運行並且LogCat沒有顯示任何東西。我也確定任務被調用,因爲我查看了調試器,任務的斷點被擊中。同時調用'client.execute(get)',但響應返回沒有用處,Fiddler不顯示任何對Web API的調用。 –

+0

「沒有用處」 - 如果它沒有拋出異常,那麼響應中會有一些有用的信息,例如狀態碼。 – CommonsWare

回答

0

HttpClient不會自動使用您可能在其他某個應用程序(例如Web瀏覽器)中配置的代理。你需要教導HttpClient,無論是via DEFAULT_PROXY還是via System.setProperty(),對於http.proxy*https.proxy*(在你的情況下,http.proxy*,因爲你沒有使用SSL)。

+0

我現在正在獲取數據。但提琴手問題仍然存在。它沒有向我顯示請求。我可以忍受它,因爲我現在知道這個調用正在進行,但是它仍然讓我感到困惑,因爲我無法在提琴手中看到請求。你能指出我爲什麼會發生這種情況嗎? –

+0

@CosminIonascu:打我。如果你的代理設置指向Fiddler,我不知道你將如何獲得數據,而Fiddler不會參與這個過程。 – CommonsWare

+0

此問題可能有助於您的提琴手問題:http://stackoverflow.com/questions/214308/how-do-i-get-fiddler-to-stop-ignoring-traffic-to-localhost –