检索网址查询

时间:2018-09-24 07:53:47

标签: android retrofit

我正在使用Retrofit在我的Android图书应用中进行联网。

这是查询URL。

https://www.googleapis.com/books/v1/volumes?q=subject:android

我想问一下如何在改造中使用它,因为它的末尾包含冒号,但我不知道该怎么做。我是新来的。如何获得(主题:android)结尾的内容?我在网上搜索它,但找不到任何解决方案。

我搜索了改造文档,但未找到任何内容。

2 个答案:

答案 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>()...);

OR

@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