2012-10-10 65 views
0

在Android中,我有一個HttpClient在web服務上執行GET。 webservice可以返回Http Error 429(太多的請求),並帶有包含更多數據的錯誤(例如,將來可以再次發送請求的時間)的JSON詳細對象。如何在Android中從NoHttpResponseException獲取Http狀態碼?

不幸的是,

response = httpclient.execute(httpGet, localContext); 

養NoHttpResponseException和響應對象保持NULL。

所以我沒有chanches來管理特定的429錯誤。

有沒有解決方案?

更新: 我使用Fiddler的是,當服務器與HTTP狀態代碼= 429,httpclient.execute(HTTPGET,localContext)返回正確的JSON對象檢查;只是拋出NoHttpResponseException - 所以問題不在於服務器不返回任何結果。

+0

嗨!亞歷克斯..你在那裏? –

+0

nohttpresponse往往表明沒有http響應,因此沒有代碼。 – njzk2

+0

@ njzk2我用fiddler檢查過,當服務器返回正確的JSON對象時,HTTP狀態碼= 429,httpclient.execute(httpGet,localContext);只是拋出NoHttpResponseException - 所以問題不在於服務器不返回任何結果。 – Alex

回答

1

你的意思是這樣嗎?

WebRequestResult result = new WebRequestResult(); 
URL url = new URL(this.url); 
URLConnection connection = url.openConnection(); 
HttpURLConnection httpConnection = (HttpURLConnection) connection; 
//This here? 
result.setStatusCode(httpConnection.getResponseCode()); 
result.setStatusDescription(httpConnection.getResponseMessage()); 
+0

不,你沒有明白。 我的服務器返回一個正確的JSON對象與HTTP狀態碼429,在Android客戶端應用程序,http錯誤是像一個NoHttpResponseException異常... – Alex

+0

其實,這裏可能有些東西。它是一個不同的http客戶端,並可能有不同的處理異國代碼(如429) – njzk2

+0

@Alex你可能是這個解決方案沒有什麼適合你..你只能使用這個,如果你使用gson。用gson你可以處理不同的狀態碼。我也建議你使用gson。它比「原始的」JSONObjects和co。簡單易行。 –