Подтвердить что ты не робот

Проблема с обновлением контента Retrofit-2

My Api принимает приложение Content-Type/json в качестве заголовков. Я отлично установил Header, как указано в "Дополнениях док-станции".

@Headers("Content-Type: application/json")
@POST("user/classes")
Call<playlist> addToPlaylist(@Body PlaylistParm parm);

Но в журнале запросов он возвращает Content-Type txt/html. Так как я должен исправить эту проблему? Этот api отлично работает в POSTMAN введите описание изображения здесь

введите описание изображения здесь

4b9b3361

Ответ 1

вы можете попробовать один ниже моих решений:

@POST("user/classes")
Call<playlist> addToPlaylist(@Header("Content-Type") String content_type, @Body PlaylistParm parm);

затем вызовите

mAPI.addToPlayList("application/json", playListParam);

Или

Создать объект HttpClient

OkHttpClient httpClient = new OkHttpClient();
        httpClient.networkInterceptors().add(new Interceptor() {
            @Override
            public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
                Request.Builder requestBuilder = chain.request().newBuilder();
                requestBuilder.header("Content-Type", "application/json");
                return chain.proceed(requestBuilder.build());
            }
        });

Затем добавьте к модифицированному объекту

Retrofit retrofit = new Retrofit.Builder().baseUrl(BASE_URL).client(httpClient).build();

Ответ 2

Попробуйте это для Retrofit 1.9 и 2.0. Для типа содержимого Json.

@Headers({"Accept: application/json"})
@POST("user/classes")
Call<playlist> addToPlaylist(@Body PlaylistParm parm);

Вы можете добавить еще много i.e

@Headers({
        "Accept: application/json",
        "User-Agent: Your-App-Name",
        "Cache-Control: max-age=640000"
    })

Ответ 3

Try:

@POST("user/classes")
Call<playlist> addToPlaylist(
@Header("Content-Type") String contentType,
@Body PlaylistParm parm);

Ответ 4

Дооснащение 2.0 сводило меня с ума. Я наконец сдался и попробовал: Android Async Http

И это сработало впервые. Я знаю, что вы думаете, что я ищу очки stckovflw, или я каким-то образом пылаю Retrofit. Не я. Мой вариант использования состоял в том, чтобы вызвать мою учетную запись bitbucket с помощью простой встроенной аутентификации: https://[имя пользователя]: [пароль] @api.bitbucket.org/2.0/repositories/[имя пользователя]

С Retrofit я получил еще один ответ. Http 200, но не полезная нагрузка, которую я ожидал бы, как вы получите от Почтальона. Я перепробовал все, что мог найти, чтобы заставить его работать. Впустую думаю 2 дня на это или больше. Я думаю, вы могли подумать, что вы неправильно сформировали свой baseUrl... или URI для ресурса. Посмотрите на вышесказанное, как это менее сложно... Я попытался сократить URI до мин. и устанавливают базовый URL на самую длинную часть вышеупомянутого; напоминание: я получил Http 200 обратно. Но не правильный ответ полезной нагрузки!

Мой коллега предложил использовать asynch lib. и учитывая все рекомендации по модернизации и время, которое я потратил, я был настроен скептически. Это сработало в первый раз!

Ответ 5

возможно, вам нужно '/', и лучше не менять Content-Type самостоятельно. просто так:

@POST("user/classes/")
Call<playlist> addToPlaylist(@Body PlaylistParm parm);

Ответ 6

Здесь решение, которое работает как до модернизации2 (v2.5) и okhttp3. Особенно хорошо работает, если вы добавите эти заголовки к ряду запросов

OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
        httpClientBuilder.addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request.Builder requestBuilder = chain.request().newBuilder();
                requestBuilder.header("Content-Type", "application/json");
                requestBuilder.header("Accept", "application/json");
                return chain.proceed(requestBuilder.build());
            }
        });

 OkHttpClient httpClient = httpClientBuilder.build();
 Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .client(httpClient)
                .build();