2017-02-25 191 views
0

我使用改装我的网络层,我面临着一个奇怪的问题,我有参数,它的值这个样子的如何避免在改造

商店网址编码:// 0TxIGQMQbObzvU4Apia0V0 &回调=

和编码后其变为这个

商店:// 0TxIGQMQbObzvU4Apia0V0%26callback%3D

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

如果我没有编码打它运行良好,所以我想知道是否有任何方法我可以禁用endoing。

我试过其他方式这样

@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)它工作正常

+0

你能告诉你的更新接口,你怎么实例化它,什么完整的URL应该是 –

+0

@ JohnO'Reilly我已经添加了接口请检查 – user2934930

回答

1

这个问题我相信是你包括 param作为env一部分之一。尝试添加@Query("callback") boolean callback到您的更新接口(在仅使用store://0TxIGQMQbObzvU4Apia0V0env

+0

不,我传递evn作为一个单独的参数,这是我的调用者 NetworkService.Factory.create()。getOnGoingSeries(QUERY,FORMAT,DIAGNOSTIC,ENV) – user2934930

+0

'env'应该只包含类似'store:// 0TxIGQMQbObzvU4Apia0V0'虽然(通过YQL文档)与'回调'是独立的参数....你可以尝试从它删除'&callback ='并尝试 –

+0

谢谢他的工作,哦,我浪费了太多的时间在那:( – user2934930