2014-09-29 3 views
6

사용자를 위해 설정 한 서비스 목록을 설정하도록 요청했습니다.가치가없는 쿼리 매개 변수를 동적으로 추가합니다.

요청은 다음과 같은 형식을 갖는다 : 서비스 파라미터

https://myserver.com/setservices?param1=val1&param2=val2&service[10]&service[1000]&service[10000]

목록 ("서비스 [10] & 서비스 [1,000] & 서비스 [10000]")를 동적으로 생성하고, 각각의 파라미터는 없다 값. Retrofit을 사용하여이를 가능하게 할 수 있습니까? retrofit documentation에서

답변

15

:

복잡한 쿼리 매개 변수는 Map 사용할 수의 조합을 포함 할 수있다.

@GET("/group/{id}/users") 
List<User> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options); 

나는 이것이 당신이 무엇을 달성하고자하는 것 같아요.

+0

@QueryMap 값없이 쿼리 매개 변수를 포함 할 수 없습니다. 문서에서 : "값은 URL 인코딩되고 null은 URL에 쿼리 매개 변수를 포함하지 않습니다." –

+1

빈 문자열은 어떻습니까? – WojciechKo

+0

동등한 기호로 URL을 생성합니다 : https://myserver.com/setservices?service[100]=&service[10000]=&service[10]= 그러나 서버는 잘 이해합니다. –

5

해결 방법이 발견되었습니다.

@GET("/setservices{services_query}") 
ServicesSetResponse setServices(@EncodedPath("services_query") String servicesQuery); 

: 그리고

getService().setServices("?param1=val1&param2=val2" + "&services[10]&services[100000]&services[1000000]") 
관련 문제