使用改造将动态值传递给url

时间:2016-08-03 20:47:44

标签: android retrofit

我正在尝试使用改造库制作一个简单的天气应用程序。我希望城市名称是动态的。这就是我到目前为止所做的:

完整网址:

    http://api.openweathermap.org/data/2.5/forecast/daily?q=dhaka&cnt=7&appid=1111

基本网址:

    http://api.openweathermap.org/

主要活动

    LinkedHashMap<String,String>data=new LinkedHashMap<>();
    data.put("q",targetCity);
    data.put("cnt",Integer.toString(7));
    data.put("appid",getString(R.string.api_key));
    Call<WeatherResponse>weatherResponseCall=weatherServiceApi.getAllWeatherReport(data);

并在我的api界面中:

    @GET("data/2.5/forecast/daily?")
Call<WeatherResponse>getAllWeatherReport(@QueryMap LinkedHashMap<String,String>data);

我既没有收到任何错误,也没有收到任何回复数据。 请帮忙。

1 个答案:

答案 0 :(得分:0)

您没有执行通话功能......

WeatherResponse response = call.execute().body();

如果我是你,我会尝试使用 okhttp 中的ResponseBody来获取返回的数据。然后使用response.string(),您可以看到从请求中检索到的内容。

或者,要记录每个请求/响应的正文数据,您应该在构建Retrofit对象时添加此拦截器:

OkHttpClient client = httpClient.addInterceptor(interceptor.setLevel(HttpLoggingInterceptor.Level.BODY))
        .build();
Retrofit retrofit = builder.client(client).build();
return retrofit.create(serviceClass);