【问题标题】:Retrofit2 shows onFailure but okhttp shows 200 okRetrofit2 显示 onFailure 但 okhttp 显示 200 ok
【发布时间】:2020-11-04 16:46:47
【问题描述】:

在通过 retrofit2 使用 GET 方法后,我无法显示数据。它适用于邮递员和 okhttp 日志记录,但不适用于改造。请指教。

OkHttp 日志:

2020-07-15 16:17:12.046 27072-27125/com.example.projjava I/okhttp.OkHttpClient: --> GET http://192.168.43.145/api/WorkSchedule/d7a8481f-02ae-458d-a220-71c4f5487540
2020-07-15 16:17:12.046 27072-27125/com.example.projjava I/okhttp.OkHttpClient: --> END GET
2020-07-15 16:17:12.547 27072-27125/com.example.projjava I/okhttp.OkHttpClient: <-- 200 OK http://192.168.43.145/api/WorkSchedule/d7a8481f-02ae-458d-a220-71c4f5487540 (499ms)
2020-07-15 16:17:12.547 27072-27125/com.example.projjava I/okhttp.OkHttpClient: Transfer-Encoding: chunked
2020-07-15 16:17:12.547 27072-27125/com.example.projjava I/okhttp.OkHttpClient: Content-Type: application/json; charset=utf-8
2020-07-15 16:17:12.547 27072-27125/com.example.projjava I/okhttp.OkHttpClient: Server: Microsoft-IIS/10.0
2020-07-15 16:17:12.547 27072-27125/com.example.projjava I/okhttp.OkHttpClient: Date: Wed, 15 Jul 2020 08:17:13 GMT
2020-07-15 16:17:12.548 27072-27125/com.example.projjava I/okhttp.OkHttpClient: {"workScheduleID":"d7a8481f-02ae-458d-a220-71c4f5487540","workScheduleFromDateTime":"2020-07-07T11:52:34.483","workScheduleToDateTime":"2020-07-07T11:52:34.483","workScheduleStatus":"Not Taken","workDescriptionID":"bcf86f34-41a7-42b7-9ab4-a4c178e68fbe","branchID":"8d55ba9e-4f4b-4817-889f-8f82a2f6c065","staffID":"00000000-0000-0000-0000-000000000000","managerID":"b7fe0bb3-cfda-459e-8f08-178209336c2d"}
2020-07-15 16:17:12.548 27072-27125/com.example.projjava I/okhttp.OkHttpClient: <-- END HTTP (403-byte body)

retrofit2 的 OnFailure 日志

2020-07-15 16:17:12.975 27072-27072/com.example.projjava D/FragmentProfile: onFailure: failed

jsonplaceholderapi类中的get方法

@GET("api/WorkSchedule/{id}")
    Call<List<Schedule>> getSchedule(@Path ("id") String WorkScheduleID);

我是如何通过这个函数调用get方法的:

private void getSchedules() {

        Call<List<Schedule>> call = RetrofitClient.getInstance().getApi().getSchedule("d7a8481f-02ae-458d-a220-71c4f5487540");

        call.enqueue(new Callback<List<Schedule>>(){

            @Override
            public void onResponse(Call<List<Schedule>> call, Response<List<Schedule>> response) {
                if (!response.isSuccessful()) {
                    textViewResult.setText("Code: " + response.code());
                    return;
                }

                List<Schedule> schedules = response.body();
                textViewResult.setText(schedules.get(0).getWorkScheduleID());

            }

            @Override
            public void onFailure(Call<List<Schedule>> call, Throwable t) {
                textViewResult.setText("failed");
                Log.d(TAG, "onFailure: "+"failed");
            }
        });
    }

【问题讨论】:

    标签: retrofit2 getmethod


    【解决方案1】:

    我发现了原因,显然我不应该使用 而是因为它只有一个 json 主体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-13
      • 2011-12-11
      • 2022-01-06
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      相关资源
      最近更新 更多