gpt4 book ai didi

java - 为什么 Retrofit2 在我的 POST 正文中添加引号?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:37 25 4
gpt4 key购买 nike

我有一个 API 请求,其中 POST 正文是作为纯文本传输的十六进制编码二进制数据。由于我无法辨别的原因,Retrofit2 在将十六进制编码的字符串添加到请求之前在其周围添加了引号,这会导致服务器阻塞并提示格式错误的请求。

我们正在将我们的应用程序从原始 Retrofit 转换为 Retrofit2,并且有效载荷生成代码没有任何变化。

我已经能够通过使用 Interceptor 在运行时从请求主体中删除封闭的引号来解决这个问题,但这似乎是一个非常愚蠢的循环,必须跳过并我宁愿不让引号出现在第一位。

我的界面是这样的:

public interface SampleApi {
@POST("sample-endpoint")
Call<ApiResponse> postThing(@Body String hexEncodedData,
@Header(HttpHeaders.DATE) String gmtDateStr,
@Header("X-CUSTOM-ONE") long custom1,
@Header("X-CUSTOM-TWO") String custom2);
}

我尝试过将 Content-Type header 设置为各种值,但没有明显效果。我还没有构建自定义类型转换器,因为似乎没有必要为普通的旧字符串创建一个自定义类型转换器。

谁能告诉我我做错了什么?

最佳答案

双引号是合乎逻辑的,因为改造是以 json 格式发送数据,所以如果类型为 String 则使用双引号。试试这个它可能对你有帮助。

public interface SampleApi {
@POST("sample-endpoint")
Call<ApiResponse> postThing(@Body RequestBody hexEncodedData,
@Header(HttpHeaders.DATE) String gmtDateStr,
@Header("X-CUSTOM-ONE") long custom1,
@Header("X-CUSTOM-TWO") String custom2);
}


String strRequestBody = "body";
RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain"),strRequestBody);

关于java - 为什么 Retrofit2 在我的 POST 正文中添加引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39478518/

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