[英]How to add multiple headers in retrofit responses in Android
在我的應用程序中,我想從服務器獲取一些數據,為此我使用了 retrofit 。
我應該添加一些標題,但在運行應用程序后顯示ForceClose錯誤!
ApiService 代碼:
interface ApiServices {
@Headers(
"Accept: application/json",
"Content-Type : application/json"
)
@POST("user/get-password")
fun sendPhoneNumber(@Body body: LoginSendPhoneBody): Single<Response<LoginSendPhoneResponse>>
@Headers(
"Accept: application/json",
"Content-Type : application/json"
)
@POST("addresses")
fun newAddress(@Header("Authorization") userToken: String, @Body body: NewAddressBody):
Single<Response<NewAddressResponse>>
}
我的 Retrofit 版本是2.5.0 !
在我閱讀的retrofit文檔中設置多個header我應該使用{}
到標題中,例如@Headers({...})
,但在添加{}
后顯示錯誤,我不能使用{}
!
日志錯誤:
java.lang.IllegalArgumentException: Unexpected char 0x20 at 12 in header name: Content-Type
at okhttp3.Headers.checkName(Headers.java:261)
at okhttp3.Headers$Builder.add(Headers.java:311)
at retrofit2.RequestFactory$Builder.parseHeaders(RequestFactory.java:283)
at retrofit2.RequestFactory$Builder.parseMethodAnnotation(RequestFactory.java:224)
at retrofit2.RequestFactory$Builder.build(RequestFactory.java:161)
at retrofit2.RequestFactory.parseAnnotations(RequestFactory.java:65)
at retrofit2.ServiceMethod.parseAnnotations(ServiceMethod.java:25)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:168)
at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
at java.lang.reflect.Proxy.invoke(Proxy.java:913)
at $Proxy2.sendPhoneNumber(Unknown Source)
at com.app.app.data.network.ApiUseCase.getSendPhoneNumber(ApiUseCase.kt:42)
我該如何解決?
改變
"Content-Type : application/json"
到
"Content-Type: application/json"
只需刪除Content-Type
后的空白:)
您可以使用 HeaderMap,同樣
val header = HashMap<String, String>()
header["Accept"] = "application/json"
header["Content-Type"] = "application/json"
header["Authorization"] = "userToken"
@POST("addresses")
fun newAddress(@HeaderMap headers: Map<String, String>, @Body body: NewAddressBody): Single<Response<NewAddressResponse>>
在 Kotlin API 界面:
@Headers(
"Accept: application/json",
"User-Agent : PostmanRuntime/7.29.0",
"Accept : */*",
"Accept-Encoding : gzip, deflate, br",
"Connection : keep-alive"
)
你可以像這樣使用你的方法:
fun callLoginAPI(@HeaderMap header: Map<String, String>)
調用此方法時只需創建地圖添加所有標題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.