【问题标题】:How to remove exception from headers in Okhttp如何从 Okhttp 中的标头中删除异常
【发布时间】:2021-03-08 06:43:38
【问题描述】:

我正在使用使用令牌进行授权调用。首先,用户在登录后获得一个令牌,我将该令牌存储在共享首选项中,并将该令牌(存储为字符串)作为标头传递给使用 okhttp 作为客户端的改造 api 调用。现在收到此错误。如何编码标头/令牌或删除此错误。 [令牌我从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$1.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$000(sign_in.java:45)
    at com.example.two_locally.sign_in$3.onResponse(sign_in.java:160)
    at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.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)

【问题讨论】:

    标签: retrofit2 okhttp


    【解决方案1】:

    您的服务接口上的 @Header 注释中有一个额外的空间。

    【讨论】:

    • @POST("api/user/info") @Headers({"Content-Type : application/json"}) 调用 getUserinfo(@Header("Authorization") String Auth) ;
    • 感谢它现在有效,又出现一个错误,只允许一个注释
    猜你喜欢
    • 2015-03-28
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2010-09-21
    相关资源
    最近更新 更多