当在JsonObject中收到响应时改造调用onError块

时间:2019-04-24 07:49:12

标签: android retrofit2

我需要发送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 个答案:

答案 0 :(得分:2)

使用

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

代替下面的方法

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

并替换各自继承的方法

答案 1 :(得分:2)

使用此

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

回调函数中的body参数现在包含服务器响应,您可以通过调用responseBody.string();

来解析它

答案 2 :(得分:1)

请致电ResponseBody而不是JsonArray:如果您不确定JSON structure

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