Ошибка: org.apache.http.client.HttpResponseException: неподдерживаемый тип носителя

Я пытаюсь вызвать веб-API, используя http://loopj.com/android-async-http/ и используя метод POST. Я отправляю json и тип контента в свой код, который всегда выдает сообщение об ошибке.

org.apache.http.client.HttpResponseException: неподдерживаемый тип носителя

Когда я тестирую то же самое в остальном клиенте, используя тот же json и тип контента, он работает нормально. Я не знаю, что еще мне нужно установить, чтобы выполнить его правильно.

Пожалуйста, смотрите мой код ниже.

// creating JSON using GSON library
Login mLogin = new Login();
mLogin.setUserName(userName);
mLogin.setPassword(password);

Gson gson = new GsonBuilder().create();
String loginJSON = gson.toJson(mLogin);

mHttpEntity = new StringEntity(loginJSON);

// execute the http asynchronously using post http method
asyncHttpClient.post(getActivity(), URL, mHttpEntity, "application/json", new AsyncHttpResponseHandler() {
    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
        Logger.d(TAG, responseBody.toString());
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        Logger.d(TAG, responseBody.toString());
    }
});

Заранее спасибо.


person N Sharma    schedule 17.09.2014    source источник


Ответы (2)


Если вы получаете org.apache.http.client.HttpResponseException: Unsupported Media Type в своем приложении, но не в клиенте REST, проблема, вероятно, связана с тем, что вы добавляете дополнительные элементы в действие POST. Сервер, вероятно, получает слишком много (или, возможно, слишком мало) параметров и поэтому возвращает неверный ответ.

Не видя вашего фактического сообщения, я не могу точно определить, в чем проблема, но я предлагаю попытаться увидеть, что сервер получает от вашего POST, и убедиться, что элементы, которые вы отправляете в Android POST, соответствуют клиенту REST API. ПОСТ точно.

person erad    schedule 17.09.2014

В моем случае проблема заключалась в том, что я не установил один из заголовков HTTP, поэтому мне пришлось добавить:

.setHeader(HttpHeaders.CONTENT_TYPE,"multipart/form-data")

или какой бы ни был ваш тип контента...

person Iryna    schedule 21.03.2017