我尝试向使用分号(;)而不是&符号(&)的API发送请求以查询参数,url请求看起来像这样:
http://api.example.com/path/?param1=p1;param2=p2
我在互联网上找到的最相似的post建议使用另一种方法将网址放在一起,然后使用@Url
注释。
改装是否包含针对这些案例的任何解决方案?
感谢。
答案 0 :(得分:1)
可以使用onDestroy()
来重写使用'&'到&#39 ;;'。棘手的部分是以不会使URL无效的方式进行。
Interceptor
这个OkHttp(支持Retrofit的网络库)拦截器将检查给定的URL是否有查询并替换任何'&'在查询部分中带有';'。从理论上讲,这应该按照你的指定行事。
可以通过自己创建new Interceptor() {
Response intercept(Chain chain) throws IOException {
HttpUrl originalUrl = chain.request().url();
String query = originalUrl.encodedQuery();
if (query == null) {
return chain.proceed(chain.request());
} else {
Request.Builder builder = chain.request().newBuilder();
builder.url(originalUrl.newBuilder()
.encodedQuery(query.replace('&', ';'))
.build());
return chain.proceed(builder.build());
}
}
};
实例并在构建时安装上述OkHttpClient
来应用它。