Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 改型查询不带符号_Java_Android_Retrofit2 - Fatal编程技术网

Java 改型查询不带符号

Java 改型查询不带符号,java,android,retrofit2,Java,Android,Retrofit2,我试图向使用分号(;)的API发送请求,而不是使用符号(&)作为查询参数,url请求如下所示: http://api.example.com/path/?param1=p1;param2=p2 我在互联网上找到的最相似的建议是使用另一种方法,将url部分放在一起,然后使用@url注释 对于这些情况,改装是否包含任何解决方案 谢谢。可以使用拦截器将URL从使用“&”重写为“;”。棘手的部分是以一种不会使URL无效的方式进行 new Interceptor() { Response int

我试图向使用分号(;)的API发送请求,而不是使用符号(&)作为查询参数,url请求如下所示:

http://api.example.com/path/?param1=p1;param2=p2
我在互联网上找到的最相似的建议是使用另一种方法,将url部分放在一起,然后使用
@url
注释

对于这些情况,改装是否包含任何解决方案


谢谢。

可以使用
拦截器
将URL从使用“&”重写为“;”。棘手的部分是以一种不会使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());
        }
    }
};
此OkHttp(支持改造的网络库)拦截器将检查给定URL是否有查询,并将查询部分中的任何“&”替换为“;”。理论上,这应该按照您指定的方式进行


可以通过自己创建
OkHttpClient
实例并在构建时安装上述
拦截器来应用它。

?听起来你的API非常非常糟糕。你确定它们不仅仅是矩阵参数吗?@chrylis老实说,我不知道!似乎已经有一个问题与我的问题有关: