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