0

当我使用 Firefox 的“REST 客户端”或 Google Chrome 的“简单 REST 客户端”对其进行测试时,我有一个似乎运行良好的 API 但是,当我使用 Android SDK 发送 Http 请求时,出现以下异常:

ClientProtocolException:服务器未能以有效的 HTTP 响应进行响应

同样,当我使用 Google 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);

4

2 回答 2

0

您的代码似乎是正确的。

ClientProtocolException如果有INVALID REQUEST来自客户端或INVALID RESPONSE来自服务器的

您还指定httpPost.setHeader("Accept", "application/json");它期望服务器返回JSON响应。有关更多详细信息,请参阅文档

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

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

于 2013-08-18T07:45:15.727 回答
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);
于 2014-01-07T19:44:37.127 回答