2014-10-09 27 views
5

Chciałbym wykonać żądanie wsadowe za pomocą funkcji Retrofit. Czy istnieje dobry sposób, jak to osiągnąć? Zasadniczo próbuję zastąpić niektóre znaki częścią kwerendy adresu URL (zamień blok jest dozwolony tylko w części ścieżki adresu URL - przy użyciu adnotacji @Path).Żądanie zbiorcze przy użyciu funkcji Retrofit

Oto pseudokod dla mojego problemu.

@GET("/v2/multi?requests=/users/self,/venues/search?client_id={client_id}&client_secret={client_secret}&v={v}&ll={ll}&intent={intent}&limit={limit}") 
    ProfileSearchVenuesResponse searchVenuesAndProfiles(@ReplaceBy("client_id") String clientId, 
          @ReplaceBy("client_secret") String clientSecret, 
          @ReplaceBy("v") int version, 
          @ReplaceBy("ll") String location, 
          @ReplaceBy("intent") String intent, 
          @ReplaceBy("limit") int limit); 

Odpowiedz

9

@Query jest to, czego szukasz:

@GET("/v2/multi?requests=/users/self,/venues/search") 
ProfileSearchVenuesResponse searchVenuesAndProfiles(
    @Query("client_id") String clientId, 
    @Query("client_secret") String clientSecret, 
    @Query("v") int version, 
    @Query("ll") String location, 
    @Query("intent") String intent, 
    @Query("limit") int limit); 

w wersji 1.7.0 z Retrofit (wydany wczoraj) komunikat wyjątku dla próby użycia @Path w oryginalnym pytanie poucza was jako do Właściwe rozwiązanie:

URL ciąg zapytania „client_id = {client_id} & client_secret = {client_secret} & v = {v} & ll = {ll} & intent = {intent} & limit = {limit} "nie może zastąpić bloku. W przypadku dynamicznych parametrów zapytania użyj @Query.

+0

Dzięki! Byłem w wersji 1.6.0, więc nie otrzymałem informacji, do których mogę użyć '@ Query'. – sealskej