2017-05-31 5 views
1
URL query string "q={city}" must not have replace block 

Ich kann das nicht zur Arbeit, ich habe mehrere andere Varianten ausprobiert, aber immer noch irgendeine Form der Ausnahme.Wie setze ich Annotation und Query in Retrofit 2.0+ richtig?

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); 

} 

Und so weiter.

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"); 
      } 
     }); 

EDIT: Log.d (.. Call.request() URL() toString() "URL CALL REQUEST");

Ich sollte meine Lösung wahrscheinlich auch teilen, ich habe gerade die Anruf-URL protokolliert.

Antwort

0

Ich habe vergessen, meine API KEY in der URL hinzuzufügen. Ich schäme meine Frage beschämend zurück.

0

U kann dieses Beispiel nehmen verwenden, zB:

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

Weitere Proben besuchen gerade diese website

+0

Ja, ich habe die Unterlagen geprüft, aber anscheinend war mein api Schlüssel fehlt. Das Protokoll zeigt auch, wie der URL-Aufruf aussieht, wenn das irgendjemandem hilft. – JoSem