在没有&符号的情况下改进查询

时间:2017-03-29 23:25:12

标签: java android retrofit2

我尝试向使用分号(;)而不是&符号(&)的API发送请求以查询参数,url请求看起来像这样:

http://api.example.com/path/?param1=p1;param2=p2

我在互联网上找到的最相似的post建议使用另一种方法将网址放在一起,然后使用@Url注释。

改装是否包含针对这些案例的任何解决方案?

感谢。

1 个答案:

答案 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来应用它。