我希望生成类似/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();
答案 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;)