如何避免翻新中的网址编码

用户名

我在网络层上使用翻新,遇到一个奇怪的问题,我有参数,它的值看起来像这样

store:// 0TxIGQMQbObzvU4Apia0V0&callback =

并在编码后更改为此

store:// 0TxIGQMQbObzvU4Apia0V0%26callback%3D

并且由于某种原因服务器不喜欢这种编码,而我却收到“ HTTP 400错误请求”。

如果我没有编码就打了,那么它运行良好,所以我想知道有什么方法可以禁用该功能。

我已经尝试过其他方法

@Query(value "env" encoded = false) String env

但没有运气。

这是我的网络接口类

public interface NetworkService
{
    @GET("v1/public/yql")
    Observable<SeriesEntity> getOnGoingSeries(@Query("q") String query,
                                              @Query("format") String format,
                                              @Query("diagnostics") boolean flag,
                                              @Query("env") String env);


    class Factory {
        public  static NetworkService create()
        {
            OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
            HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
            loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            clientBuilder.addInterceptor(loggingInterceptor);

            Gson gson = new GsonBuilder().disableHtmlEscaping().create();

            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("https://query.yahooapis.com")
                    .client(clientBuilder.build())
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .build();

            return retrofit.create(NetworkService.class);
        }
    }
}

编辑:

我还注意到,问题仅是'&'的编码值,因为如果我替换它的值(whic为%26),它可以正常工作

约翰·奥雷利

我相信的问题是您将callbackparam纳入env其中。尝试添加@Query("callback") boolean callback到改造界面(并仅store://0TxIGQMQbObzvU4Apia0V0用于env

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章