gpt4 book ai didi

Android Retrofit api调用,参数中有空格

转载 作者:行者123 更新时间:2023-12-04 03:17:24 25 4
gpt4 key购买 nike

我正在尝试使用 Retrofit 1.x 进行 API 调用:

@POST("/test?api-version=1.0")
void createMyStuff(
@Header("X-Signature") String authorization,
@Query(value="nickname") String nickname,
@Query("language") String language,
Callback<MyAPIResponse> cb);

问题 is :昵称中可以有空格。
因此,在调用电话之前,如果昵称是“John Doe”(两个空格),我会替换其中的空格并将其发送为:API 调用中的“John%20%20Doe”。

它以 400 错误请求失败。

errorResponse 对象中报告的 URL 是:
https://.com/foo/test?nickname=john%2520%2520doe&language=en-US

请注意,%20 被替换为 %2520

我调查的 : 没有明确的答案。 SO上有人建议在线程中使用 FunName(value="apiname",encodeValue=true)
但是 encodeValue 没有解决。

我也尝试使用 UTF-8 进行编码,但它不起作用。我不确定 URL 编码,因为这不是真正的 URL,只是其中的一部分。

感谢任何帮助。

最佳答案

在 Retrofit2 中,参数名称和值默认是 URL 编码的。您需要添加encoded = true改变这种行为。

void createMyStuff(
@Header("X-Signature") String authorization,
@Query(value="nickname", encoded = true) String nickname,
@Query("language") String language,
Callback<MyAPIResponse> cb);

关于Android Retrofit api调用,参数中有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40010715/

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