我正在使用Retrofit在我的Android图书应用中进行联网。
这是查询URL。
https://www.googleapis.com/books/v1/volumes?q=subject:android
我想问一下如何在改造中使用它,因为它的末尾包含冒号,但我不知道该怎么做。我是新来的。如何获得(主题:android)结尾的内容?我在网上搜索它,但找不到任何解决方案。
我搜索了改造文档,但未找到任何内容。
答案 0 :(得分:2)
尝试使用 Hash: 00:00:00.0111296; Initial 00:00:01.3957468
批注
@Path
答案 1 :(得分:0)
您可以尝试@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