【问题标题】:How to send parallel GET requests with Retrofit?如何使用 Retrofit 发送并行 GET 请求?
【发布时间】:2015-08-04 06:59:32
【问题描述】:

我正在尝试使用 OpenWeatherMap api 创建示例天气应用程序。我在使用 Retrofit 发送 GET 请求来检索天气数据时遇到问题。 这是我的代码:

RestAdapter adapter = new RestAdapter.Builder()
                .setEndpoint(END_POINT)
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .setExecutors(Executors.newFixedThreadPool(5), null)
                .build();
        CurrentApi current = adapter.create(CurrentApi.class);
        current.getByCity("hanoi", "metric", new Callback<CurrentWeather>() {
            @Override
            public void success(CurrentWeather currentWeather, Response response) {
                Log.d(TAG, "Hanoi: " + new Gson().toJson(currentWeather));
            }

            @Override
            public void failure(RetrofitError error) {
                error.printStackTrace();
            }
        });

        current.getByCityCountry("London,uk", "metric", new Callback<CurrentWeather>() {
            @Override
            public void success(CurrentWeather currentWeather, Response response) {
                Log.d(TAG, "London: " + new Gson().toJson(currentWeather));
            }

            @Override
            public void failure(RetrofitError error) {
                error.printStackTrace();
            }
        });

当我运行其中一个时,它可以工作。但是当我用不同的 URL 发出 2 个请求时,它们都没有被调用。 (因为我没有看到 Logcat 中记录的任何内容)。 我该如何处理?

【问题讨论】:

标签: android retrofit


【解决方案1】:

方法可以声明为同步或异步执行。

  1. 具有返回类型的方法将被同步执行。

  2. 异步执行要求方法的最后一个参数是Callback。

--来自Official site

【讨论】:

    【解决方案2】:

    哦,我的错误 :D 我忘了我已经过滤了结果,所以我找不到日志 :D 我的代码仍然有效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      相关资源
      最近更新 更多