Android Http请求ClientProtocolException

时间:2013-08-18 06:44:42

标签: android rest http-post http-request

当我使用Firefox的“REST客户端”或Google Chrome的“简单REST客户端”进行测试时,我的API看起来非常完美 但是,当我使用Android SDK发送Http请求时,我得到以下异常:

ClientProtocolException:服务器无法使用有效的HTTP响应进行响应

当我使用谷歌浏览器的“高级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);

2 个答案:

答案 0 :(得分:0)

您的代码似乎是正确的。

如果客户端有ClientProtocolException或服务器有INVALID REQUEST,则会发生

INVALID RESPONSE

此外,您已指定httpPost.setHeader("Accept", "application/json");它希望服务器返回JSON响应。有关详细信息,请参阅docs

因此,您可以查看从服务器发送的响应。它应该是JSON响应。

或者您可以尝试删除httpPost.setHeader("Accept", "application/json");并检查您的回复。

答案 1 :(得分: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);