如何在Retrofit 2.0+中正确设置注释和查询?

时间:2017-05-31 19:33:24

标签: java android api retrofit

URL query string "q={city}" must not have replace block

我无法使用此功能,我已经尝试了其他几种变体,但仍然会遇到某种形式的异常。

public interface WeatherInterface {

    @GET("/weather?q={city}")
    Call<WeatherModel> getWeather(@Query("city") String city);

}

/////

public interface WeatherInterface {

    @GET("/weather")
    Call<WeatherModel> getWeather(@Query("q") String city);

}

等等。

WeatherActivity.class

Call<WeatherModel> call = weatherInterface.getWeather("""CITYNAME""");
        call.enqueue(new Callback<WeatherModel>() {
            @Override
            public void onResponse(Call<WeatherModel> call, Response<WeatherModel> response) {
                if(response.isSuccessful()) {
                    **///FIRST VARIANT FAILS HERE**
                    city.setText(response.body().getName());
                }
                **///SECOND VARIANT FAILES RESPONSE**
                else Log.d("No response", "RESPONSE");
            }

            @Override
            public void onFailure(Call<WeatherModel> call, Throwable t) {
                Log.d("fail", "fail");
            }
        });

编辑: Log.d(call.request()。url()。toString(),&#34; CALL REQUEST URL&#34;);

我也应该分享我的解决方案,我只是记录了呼叫网址。

2 个答案:

答案 0 :(得分:0)

我忘记了在网址中添加API KEY。我可耻地撤回了我的问题。

答案 1 :(得分:0)

你可以使用这个样本作为例子:

   public interface GitHubClient {  
        @GET("/users/{user}/repos")
        Call<List<GitHubRepo>> reposForUser(
            @Path("user") String user
        );
    }

如需更多样本,请访问此website