如何从 Okhttp 中的 headers 中删除异常
How to remove exception from headers in Okhttp
我正在使用令牌进行授权调用。首先,用户在登录后获得一个令牌,我将该令牌存储在共享首选项中,并将该令牌(存储为字符串)作为 header 传递给使用 okhttp 作为客户端改进 api 调用。现在收到此错误。如何对 header/ 标记进行编码或消除此错误。
[我从 API 获得的令牌示例:“Du_jwJP64Znbwc1EvyJMEkw9HHwIZPjYnXgchiq5e2Tf24y9vNBrD6PJX8jTMj7qGDQyxTDBW8XrlwSRBjNQ-Tzzafq7r3jS5x9ZsXJgU9JgDi8ZNmwf_JD47aTRUKEhX5KtZ52oOeiuOnjO9XKCKT2g1vLpmcpUxvOi36R6ySNoMBmWzn7KmG6_vZzhfT0YhhfIW8x6vPEHmDLvBIIWbBDry0qpoiZNkgkI2D6CkFqQN1Hy-fMc3tFX7Y-VPRBF6bXQOHbsDAPkSqFfVxMQaw”]
API服务接口:
@FormUrlEncoded @Multipart @POST("api/user/info") @Headers({"Content-Type:application/json"}) Call
<QRcodeResponse> getUserinfo(@Header("Authorization") String Auth);
java.lang.IllegalArgumentException: Unexpected char 0x20 at 12 in header name: Content-Type
at okhttp3.Headers$Builder.checkNameAndValue(Headers.java:330)
at okhttp3.Headers$Builder.add(Headers.java:288)
at retrofit2.ServiceMethod$Builder.parseHeaders(ServiceMethod.java:329)
at retrofit2.ServiceMethod$Builder.parseMethodAnnotation(ServiceMethod.java:270)
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:175)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
at retrofit2.Retrofit.invoke(Retrofit.java:147)
at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
at $Proxy0.getUserinfo(Unknown Source)
at com.example.two_locally.sign_in.updateContent(sign_in.java:209)
at com.example.two_locally.sign_in.access[=12=]0(sign_in.java:45)
at com.example.two_locally.sign_in.onResponse(sign_in.java:160)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:227)
at android.app.ActivityThread.main(ActivityThread.java:7822)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
您的服务界面上的 @Header
注释中有一个额外的 space。
我正在使用令牌进行授权调用。首先,用户在登录后获得一个令牌,我将该令牌存储在共享首选项中,并将该令牌(存储为字符串)作为 header 传递给使用 okhttp 作为客户端改进 api 调用。现在收到此错误。如何对 header/ 标记进行编码或消除此错误。 [我从 API 获得的令牌示例:“Du_jwJP64Znbwc1EvyJMEkw9HHwIZPjYnXgchiq5e2Tf24y9vNBrD6PJX8jTMj7qGDQyxTDBW8XrlwSRBjNQ-Tzzafq7r3jS5x9ZsXJgU9JgDi8ZNmwf_JD47aTRUKEhX5KtZ52oOeiuOnjO9XKCKT2g1vLpmcpUxvOi36R6ySNoMBmWzn7KmG6_vZzhfT0YhhfIW8x6vPEHmDLvBIIWbBDry0qpoiZNkgkI2D6CkFqQN1Hy-fMc3tFX7Y-VPRBF6bXQOHbsDAPkSqFfVxMQaw”] API服务接口:
@FormUrlEncoded @Multipart @POST("api/user/info") @Headers({"Content-Type:application/json"}) Call
<QRcodeResponse> getUserinfo(@Header("Authorization") String Auth);
java.lang.IllegalArgumentException: Unexpected char 0x20 at 12 in header name: Content-Type
at okhttp3.Headers$Builder.checkNameAndValue(Headers.java:330)
at okhttp3.Headers$Builder.add(Headers.java:288)
at retrofit2.ServiceMethod$Builder.parseHeaders(ServiceMethod.java:329)
at retrofit2.ServiceMethod$Builder.parseMethodAnnotation(ServiceMethod.java:270)
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:175)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
at retrofit2.Retrofit.invoke(Retrofit.java:147)
at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
at $Proxy0.getUserinfo(Unknown Source)
at com.example.two_locally.sign_in.updateContent(sign_in.java:209)
at com.example.two_locally.sign_in.access[=12=]0(sign_in.java:45)
at com.example.two_locally.sign_in.onResponse(sign_in.java:160)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:227)
at android.app.ActivityThread.main(ActivityThread.java:7822)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
您的服务界面上的 @Header
注释中有一个额外的 space。