我在网络层上使用翻新,遇到一个奇怪的问题,我有参数,它的值看起来像这样
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),它可以正常工作
我相信的问题是您将callback
param纳入env
其中。尝试添加@Query("callback") boolean callback
到改造界面(并仅store://0TxIGQMQbObzvU4Apia0V0
用于env
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句