2013-08-18 92 views
0

當我使用Firefox的「REST客戶端」或谷歌瀏覽器的「簡單REST客戶端」測試它時,我的API似乎正在工作完美。但是,當我使用Android SDK發送Http請求時,以下情況除外:Android Http請求ClientProtocolException

ClientProtocolException:服務器無法以有效的HTTP響應

還當我測試使用谷歌Chrome瀏覽器的「高級REST客戶端」迴應我有一個空的響應,所以什麼可能會導致此任何想法?

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse = null;
HttpPost httpPost = new HttpPost(Constants.URL);
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("Accept", "application/json");
StringEntity se = new StringEntity(params,HTTP.UTF_8);
httpPost.setEntity(se);
httpClient.execute(httpPost);

+0

任何運氣?我有類似的問題 – amadib

回答

0

您的代碼似乎是正確的。

ClientProtocolException發生,如果有來自客戶端的INVALID REQUEST或者您也可以指定httpPost.setHeader("Accept", "application/json");,預計該服務器返回的響應JSON服務器

INVALID RESPONSE。有關更多詳細信息,請參閱docs

所以你可以檢查你從服務器發送的回覆。它應該是一個JSON響應。

或者您可以嘗試刪除httpPost.setHeader("Accept", "application/json");並檢查您得到的回覆。

+0

我試圖刪除標題和仍然是相同的結果 –

+0

你可以發佈你的服務器端代碼,並舉例說明你正在嘗試發送什麼以及你想要接收什麼 –

0

這應該工作

HttpParams httpParams=new BasicHttpParams(); 
DefaultHttpClient httpClient = new DefaultHttpClient(httpParams); 
HttpResponse httpResponse = null; 
HttpPost httpPost = new HttpPost(Constants.URL); 
httpPost.setHeader("Content-Type", "application/json"); 
httpPost.setHeader("Accept", "application/json"); 
StringEntity se = new StringEntity(params,HTTP.UTF_8); 
httpPost.setEntity(se); 
httpClient.execute(httpPost); 
+0

沒有改變任何東西 – Mehdiway