Модификация вызывает блок onError, когда ответ получен в JsonObject - PullRequest
2 голосов
/ 24 апреля 2019

Мне нужно отправить JsonArray на обслуживание и получить JsonObject взамен.

Я использовал следующий код.

 @POST
    Call<JsonArray> networkUtilityJsonArrayPostCall(

            @Url String url,
            @Body JsonArray jsonArray);

Затем я позвонил, используя следующий код.

 callJsonArray = api.networkUtilityJsonArrayPostCall(URL, jsonArray)

Получает код ответа 200, но не выполняет блок onResponse, так как ожидает ответа JsonArray.

   callJsonArray.enqueue(new Callback<JsonArray>() {
                @Override
                public void onResponse(Call<JsonArray> call, Response<JsonArray> response) {

Ответы [ 3 ]

2 голосов
/ 24 апреля 2019

Используйте это

@POST
Call<ResponseBody> networkUtilityJsonArrayPostCall(
        @Url String url,
        @Body JsonArray jsonArray);

Теперь параметр body в вашем обратном вызове содержит ответ сервера, и вы можете проанализировать его, вызвав responseBody.string();

2 голосов
/ 24 апреля 2019

Используйте

@POST
Call<JSONObject> networkUtilityJsonArrayPostCall(
        @Url String url,
        @Body JsonArray jsonArray);

вместо метода ниже

@POST
Call<JsonArray> networkUtilityJsonArrayPostCall(
        @Url String url,
        @Body JsonArray jsonArray);

и замените соответствующие унаследованные методы

1 голос
/ 24 апреля 2019

Позвоните ResponseBody вместо JsonArray: если вы не уверены в JSON structure.

@POST
Call<ResponseBody> networkUtilityJsonArrayPostCall(@Url String url, @Body JsonArray jsonArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...