Настройка типа содержимого Json для клиента Rest

Я использую AsyncHttpClient для Android от loopj, чтобы я мог взаимодействовать с созданным мной спокойным веб-приложением. Я проверил POST-запрос с помощью Postman, и он отлично работает.

Тем не менее, в Android я пытаюсь сделать запрос на публикацию, однако, так как тип контента всегда установлен как text / html.

    RequestParams params = new RequestParams();
    params.setUseJsonStreamer(true);
    params.put("email", "android@tester.com");
    StringEntity se = null;
    try {
        se = new StringEntity(params.toString());
        se.setContentType("application/json");
    } catch (UnsupportedEncodingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    Header headers[] = {};
    if(getActivity() != null){
    RestClient.postWithContentType(getActivity(), "contacts", se, "application/json", new AsyncHttpResponseHandler() {
        //onSuccess and onFailure methods ommitted

    });

Это продолжает давать сбой, и я получаю это сообщение в logcat: Passed contentType будет игнорироваться, потому что HttpEntity устанавливает тип содержимого.

Итак, я попытался изменить это,

 public static void postWithContentType(Context context,String url,StringEntity s,String contentType, AsyncHttpResponseHandler responseHandler){
      s.setContentType("application/json");
      client.post(context, getAbsoluteUrl(url), s, contentType, responseHandler); 
  }

Однако я все еще получаю то же самое сообщение, это действительно расстраивает, и я пытался понять это целую вечность! Если у кого-то есть идеи о том, как установить тип контента - это будет высоко оценено, спасибо!

2 ответа

У меня была такая же проблема.

Я не могу понять, что влияет на это, потому что это действительно работает несколько дней назад. Я просто вручную добавляю заголовок, и он работает.

Просто добавь RestClient.addHeader("Content-Type", "application/json"); выше вашего RestClient.postWithContentType(...) код.

RequestParams requestParams = new RequestParams();
asyncHttpClient.addHeader("Accept", "text/json");
asyncHttpClient.addHeader("content-type", "application/json");
asyncHttpClient.post(context, getAbsoluteUrl(url), requestParams, new AsyncHttpResponseHandler() {
   @Override
   public void onSuccess(int statusCode, String content) {
       super.onSuccess(content
       // Ur logic
   }

   @Override
   public void onFailure(Throwable error, String content) {
       super.onFailure(error, content);
       // Ur logic
   }
});
Другие вопросы по тегам