2013-08-18 59 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