Retrofit 2 GET/POST 不适用于 Android 中的大数据

Fai*_*her 0 post android get retrofit retrofit2

我已经看到有关此问题的其他线程,但无法得到任何正确的答案。

@POST("task/GetAllTasks")
Call<MyTask> getMyTasks(@Header("Authorization") String token, @Query("EmployeeId") String emp);
Run Code Online (Sandbox Code Playgroud)

这就是我的调用方式,起初我认为这是由于GET请求数据限制,因为 GET 施加了数据限制,然后我将请求从 GET 更改为 POST 但问题仍然存在。

ApiUtils.getTaskService().getMyTasks(apiToken, employeeId).enqueue(new Callback<MyTask>() {
@Override
        public void onResponse(Call<MyTask> call, Response<MyTask> response) {
   // ... Successful code goes here
 }

@Override
        public void onFailure(Call<MyTask> call, Throwable t) {
        //.. This block of code executing now :(
  }
 }
Run Code Online (Sandbox Code Playgroud)

总是onFailure被调用。我已经在 Postman 上测试了同样的请求,它正在返回数据。Content-Length 是content-length ?45720

它确实适用于少量数据,因为我已经在 Dev 数据库上对其进行了测试,该数据库具有较小的数据量,但在 Live 环境中它不断引起问题。

请提出一个解决方案,或者我应该为此离开 Retrofit 并转向原生 Android 库?

编辑:我们可以在改造中增加请求超时,如果是,那么如何?

Mạn*_*yễn 5

尝试增加超时时间:

OkHttpClient client = new OkHttpClient().newBuilder()
                  .readTimeout(10, TimeUnit.SECONDS)
                  .connectTimeout(10, TimeUnit.SECONDS).build();
Run Code Online (Sandbox Code Playgroud)

并将其设置为您的改造:

new Retrofit.Builder().baseUrl("xxx").client(client).build().create(xxx.class);