Установить заголовок в HTTP-запросе на модификацию - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть модифицированный интерфейс (kotlin):

interface Api {
     @POST("updates")
     fun getDetails(@Header("Authorization") token: Token,
                    @Body body: RequestBody): Single<ResponseObject>
}

Когда я называю это так (в java),

List<String> apps = Arrays.asList("app1", "app2");
JSONObject jsonObject = new JSONObject();
RequestBody requestBody;
try {
    jsonObject.put("apps", new JSONArray(apps));
}
catch(JSONException e) {
    e.printStackTrace();
}
requestBody = RequestBody.create(jsonObject.toString(), MediaType.get("application/json"));
api.getDetails(token, requestBody); // works

Он работает и возвращает правильные данные.

Моя проблема в том, что я не хочу создавать новый объект RequestBody для каждого вызова, поэтому вместо получения RequestBody я хочу, чтобы мой интерфейс получил объект JSON. Однако, когда я пытаюсь это сделать,

interface Api {
     @POST("updates")
     fun getDetails(@Header("Authorization") token: Token,
                    @Header("Content-Type") type: String,
                    @Body body: JSONObject): Single<ResponseObject>
}

api.getDetails(token, "application/json", jsonObject); // does not work

возвращается с ошибкой retrofit2.adapter.rxjava2.HttpException: HTTP 400.

Как мне сделать этот вызов http только с JSONObject? Я думаю, что может быть что-то не так с тем, как я определяю Content-Type, но я не могу понять это.

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