如何使用Retrofit发送并行GET请求?

时间:2015-08-04 06:59:32

标签: android retrofit

我正在尝试使用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中记录的任何内容)。 我怎么处理这个?

2 个答案:

答案 0 :(得分:0)

  

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

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

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

  4.   

- 来自Official site

答案 1 :(得分:0)

哦,我的错误:D我忘记了我已经过滤了结果,所以我无法找到日志:D我的代码仍然可以使用!