【问题标题】:Retrofit change read timeout for one api call一个 api 调用的改造更改读取超时
【发布时间】:2016-12-24 19:02:57
【问题描述】:

我想使用改造来更改 OkHttp 客户端上的读取超时,以进行一次 api 调用。需要明确的是,我有一个可能需要很长时间的端点,我需要增加它的超时时间,并且只增加那个 api 调用的超时时间。有没有办法通过注释来做到这一点?有没有一种方法可以在不更改应用其余部分的超时的情况下做到这一点?

【问题讨论】:

    标签: android retrofit2 dagger-2 okhttp3


    【解决方案1】:

    我面临着类似的情况。我解决了我的问题,在我的ApiModule 中提供了两个 Api 实例,每个实例都有你自己的OkHttpClient。使用@Named 识别每一个。

    我试图避免只为超时配置提供两个实例,这对我来说似乎有点奇怪,但由于我的 API 实例是单例(为了性能),我看不到其他解决方案。

    【讨论】:

      【解决方案2】:

      您实际上可以进行每次调用配置

      复制默认构建器并创建另一个客户端

      private final OkHttpClient client = new OkHttpClient();
      
        public void run() throws Exception {
          Request request = new Request.Builder()
              .url("http://blah_blah_api.com/") // This URL is served with a 1 second delay.
              .build();
      
          try {
            // Copy to customize OkHttp for this request.
            OkHttpClient copy = client.newBuilder()
                .readTimeout(500, TimeUnit.MILLISECONDS)
                .build();
      
            Response response = copy.newCall(request).execute();
            System.out.println("Response 1 succeeded: " + response);
          } catch (IOException e) {
            System.out.println("Response 1 failed: " + e);
          }
      
          try {
            // Copy to customize OkHttp for this request.
            OkHttpClient copy = client.newBuilder()
                .readTimeout(3000, TimeUnit.MILLISECONDS)
                .build();
      
            Response response = copy.newCall(request).execute();
            System.out.println("Response 2 succeeded: " + response);
          } catch (IOException e) {
            System.out.println("Response 2 failed: " + e);
          }
        }
      

      【讨论】:

      • 我正在使用带有 Dagger-2 的 Retrofit,有什么方法可以在不为 OkHttp 创建命名变量的情况下解决这个问题?
      • 我还没有研究过匕首。我知道这是一个依赖注入工具。如何创建一个帮助类并将类变量作为依赖项传递给您的活动。抱歉,如果我误导了。
      猜你喜欢
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 2012-10-08
      • 1970-01-01
      • 2019-12-13
      相关资源
      最近更新 更多