0
我有一个API请求,其中POST
正文是以纯文本形式传输的十六进制编码的二进制数据。由于我无法辨别的原因,Retrofit2在将十六进制编码的字符串添加到请求前加上引号,这会导致服务器扼杀它并抱怨格式错误的请求。为什么Retrofit2将引号添加到我的POST正文中?
我们正在将我们的应用程序从原始翻新转换为翻新2,并且没有任何有效载荷生成代码已经改变。
我已经能够通过使用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
头不同的值尝试。我还没有建立一个自定义类型转换器,因为不得不为一个普通的旧字符串制作其中的一个,看起来应该没有必要。
有人能告诉我我做错了什么吗?
但是没有花括号让它成为一个真正的JSON对象,所以它实际上并不是JSON?无论如何,你的建议固定了它,这是主要的。 – Argyle