Android Http-запрос ClientProtocolException

У меня есть API, который работает отлично, когда я тестирую его с помощью «REST-клиента» Firefox или «Простой REST-клиент» Google Chrome. Однако, когда я отправляю запрос Http с помощью Android SDK, я получаю следующее исключение:

ClientProtocolException: серверу не удалось ответить допустимым HTTP-ответом

также, когда я тестировал «Расширенный клиент REST» Google Chrome, я получил пустой ответ, так что есть идеи о том, что может быть причиной этого?

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);


person Helal Ismail    schedule 18.08.2013    source источник
comment
при удаче? у меня похожая проблема   -  person amadib    schedule 22.06.2015


Ответы (2)


Ваш код кажется правильным.

ClientProtocolException происходит, если есть INVALID REQUEST от клиента или INVALID RESPONSE от сервера

Также вы указали httpPost.setHeader("Accept", "application/json");, он ожидает, что сервер вернет ответ JSON. Дополнительные сведения см. в документах.

Таким образом, вы можете проверить, какой ответ вы отправляете с сервера. Это должен быть ответ JSON.

Или вы можете попробовать удалить httpPost.setHeader("Accept", "application/json"); и проверить, какой ответ вы получаете.

person Sunil Mishra    schedule 18.08.2013
comment
можете ли вы опубликовать свой код на стороне сервера и привести пример того, что вы пытаетесь отправить и что вы хотите получить - person Sunil Mishra; 18.08.2013

Это должно работать

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);
person user3143899    schedule 07.01.2014
comment
ничего не изменил - person Mehdiway; 29.12.2014