Как добавить тело ключа API в перехватчик на запрос поста с помощью модернизации - PullRequest
0 голосов
/ 01 февраля 2019

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

URL: https://someapi.com/api/stories/

МЕТОД: POST

HEADERS: Accept: application / json

INPUT: {"key": ""}

@ Предоставляет общий перехватчик @Singleton Interceptor (NetworkUtils networkUtils) {return chain -> {Request originalRequest = chain.request ();

        RequestBody requestBody = networkUtils.createBody();
        String postBodyString = networkUtils.bodyToString(requestBody);
        Request.Builder builder = originalRequest.newBuilder();
        postBodyString += ((postBodyString.length() > 0) ? "&" : "") + networkUtils.bodyToString(requestBody);
        originalRequest = builder.
                post(RequestBody.create(MediaType.parse(Constants.NETWORKING_HEADER.CONTENT_TYPE), postBodyString)).build();
        return chain.proceed(originalRequest);
    };
}


public RequestBody createBody() {
    return new FormBody.Builder()
            .add(Constants.NETWORKING_HEADER.KEY, Constants.NETWORKING_HEADER.API_KEY).build();
}

public String bodyToString(final RequestBody request) {

    try {
        final RequestBody copy = request;
        final Buffer buffer = new Buffer();
        if (copy != null) {
            copy.writeTo(buffer);
        } else {
            return "";
        }
        return buffer.readUtf8();
    } catch (final IOException e) {
        String message = "Did not work";
        Timber.d(message);
        return message;
    }
}

1 Ответ

0 голосов
/ 02 февраля 2019

Возможный дубликат Retrofit2: изменение тела запроса в OkHttp Interceptor

Последний ответ @Debanjan предлагает хорошее решение, охватывающее как application / json, так и данные формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...