gpt4 book ai didi

android - 如何避免 Retrofit 中的 URL 编码?

转载 作者:搜寻专家 更新时间:2023-11-01 08:28:43 28 4
gpt4 key购买 nike

我正在对我的网络层进行改造我遇到了一个奇怪的问题我有参数,它的值看起来像这样

store://0TxIGQMQbObzvU4Apia0V0&callback=

编码后变成这样

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

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

如果我在没有编码的情况下点击,它运行良好,所以我想知道有什么方法可以禁用 endoing。

我试过其他类似的方法

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

但运气不好。

这是我的网络接口(interface)类

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);
}
}
}

编辑:

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

最佳答案

请使用encoded = true

@Query(value = "email", encoded = true)

@HTTP(method = "DELETE", path = ApiConstant.DELETE_CONTACT_INFO, hasBody = true)

Observable deleteContactInfo(@Query(value = "email", encoded = true) String email);

关于android - 如何避免 Retrofit 中的 URL 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42461576/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com