Retrofit - 在插入查询后将文本附加到结束点的末尾

时间:2016-06-22 11:05:39

标签: android retrofit retrofit2

我希望生成类似/api/method?page=1.json的结束点,但问题是最后会插入查询,就像/api/method.json?page=1一样。

// from my service
@GET("method.json")
Call<Void> method(@Query("page") int page);

// building retrofit
new Retrofit.Builder()
            .baseUrl(URL)
            .client(httpClient)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

更新/ 以下作品,但我@Blackbelt答案是最好的。

HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    logging.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BASIC : HttpLoggingInterceptor.Level.NONE);
    return new OkHttpClient.Builder()
            .addInterceptor(logging)
            .addInterceptor(new Interceptor() {
                @Override
                public Response intercept(Chain chain) throws IOException {
                    Request request = chain.request();
                    request = request.newBuilder().url(request.url().toString().concat(".json")).build();
                    return chain.proceed(request);
                }
            })
            .build();

3 个答案:

答案 0 :(得分:1)

  

我想生成像/api/method?page=1.json

这样的结束点

原因。没有public DirectoryInfo CheckIfFolderExistAndIfNotCreateIt(string path) { if (!Directory.Exists(path)) { return Directory.CreateDirectory(path); } return null; } [Test] public void CheckIfFolderExistAndIfNotCreateIt_NotExistPathWithDollarSign_ReturnNull() { var directoryInfo = CheckIfFolderExistAndIfNotCreateIt("$/Folder/"); Assert.IsNull(directoryInfo); } 它看起来更好,你以某种方式隐藏响应是.json对象的信息。

json

这是预期的行为。如您所见,它附加您提供的参数。所以你可以改变

but the problem is queries will be inserted at the end just like /api/method.json?page=1.

Call<Void> method(@Query("page") int page);

然后你称之为

Call<Void> method(@Query("page") String page);

答案 1 :(得分:0)

你可以使用类似的东西,

@GET("method?page={page}.json")
Call<Void> method(@Path("page") int page);

答案 2 :(得分:0)

只需尝试改变

@GET("method.json")
Call<Void> method(@Query("page") String page);

并传递值,如方法(&#34; 1.json&#34;)