如何在翻新中传递自定义查询参数?

时间:2019-12-06 08:41:18

标签: retrofit retrofit2 okhttp testrail

尝试实现与TestRail API(http://docs.gurock.com/testrail-api2/accessing)进行交互的自定义​​解决方案时,我陷入了以下情况:

Api调用是这样的:/index.php?/api/v2/get_case/1,这意味着在任何“ ”之后是查询字符串参数。是否可以使用Retrofit参数化此参数?

如果我这样做:

@GET("index.php?/api/v2/get_case/{id}")
Call<TestCase> getTestCase(@Query("id") int id);

我收到此异常:

java.lang.IllegalArgumentException: URL query string "/api/v2/get_case/{id}" must not have replace block. For dynamic query parameters use @Query.

知道了...但是我该如何使用翻新进一步进行?

1 个答案:

答案 0 :(得分:0)

通过拦截器解决了这个问题

Request currentRequest = chain.request();
String finalURL = currentRequest.url().toString().replace("index.php/", "index.php?/");

Request.Builder request = currentRequest.newBuilder()
        .addHeader("Authorization", authToken)
        .addHeader("Content-Type", ContentType.JSON.toString())
        .url(finalURL);