Вы можете попробовать @Query
.
Интерфейс :
public interface NetworkService {
@GET("books/v1/volumes")
Call<ResponseBody> getSubject(@Query(value = "q") String subjectName);
}
Использование :
public static final String url = "https://www.googleapis.com/";
// onCreate()
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.build();
NetworkService client = retrofit.create(NetworkService.class);
Call<ResponseBody> call = client.getSubject("subject:android");
call.enqueue(new Callback<ResponseBody>()...);
ИЛИ
@QueryMap
.
Интерфейс :
public interface NetworkService {
@GET("books/v1/volumes")
Call<ResponseBody> getSubject(@QueryMap() Map<String, String> queryMap);
}
Использование :
public static final String url = "https://www.googleapis.com/";
// onCreate()
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.build();
NetworkService client = retrofit.create(NetworkService.class);
Map<String, String> subjectMap = new HashMap<>();
subjectMap.put("q", "subject:android");
Call<ResponseBody> call = client.getSubject(subjectMap);
call.enqueue(new Callback<ResponseBody>()...);
Необязательно :
Вы можете указать, являются ли имя и значение параметра уже URL-адресом.
Когда установлено значение true
: "https://www.googleapis.com/books/v1/volumes?q=subject:android".
Когда false
(по умолчанию): "https://www.googleapis.com/books/v1/volumes?q=subject%3Aandroid".
Call<ResponseBody> getSubject(@Query(value = "q", encoded = true) String subjectName); // for @Query
Call<ResponseBody> getSubject(@QueryMap(encoded = true) Map<String, String> queryMap); // for @QueryMap