如何在Android中的Retrofit中获取标头响应?

Ani*_*kur 5 android retrofit

这是我的终点:

\n\n
@POST("v4/MyStore/data")\nObservable<Headers> requestStore(@Body MyStoreRequest request);\n
Run Code Online (Sandbox Code Playgroud)\n\n

我试图得到这样的回应:

\n\n
requestService.requestStore(request)\n                .subscribeOn(Schedulers.io())\n                .observeOn(Schedulers.computation())\n                .map(headers -> {\n                   Log.d("Response",""+headers);\n                    return headers;\n                }).subscribe(headers -> {\n                            Log.d("Response",""+headers);\n                        },\n                        error -> {\n                           Log.d("ERRRROOOR","Error");\n                        });\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到如下错误:

\n\n
Exception: retrofit2.adapter.rxjava.HttpException: HTTP 403 Forbidden\n
Run Code Online (Sandbox Code Playgroud)\n\n

在邮递员中我收到回复:

\n\n
Connection \xe2\x86\x92keep-alive\nContent-Length \xe2\x86\x920\nContent-Type \xe2\x86\x92application/json; charset=utf-8\nDate \xe2\x86\x92Mon, 03 Sep 2018 18:47:30 GMT\nMYid \xe2\x86\x92f028df50-c8c5-4cce-92e7-70130345ba46\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在这里做错了什么?

\n

Sha*_*nth 0

您可能在来自 Android 客户端的 API 请求中缺少标头。根据您的评论,您将在授权标头中发送不记名令牌。

因此,您需要发送不记名令牌以及请求正文,如下所示

@Headers({
        "Authorization: Bearer <your_bearer_token_here>", /* change token here */
        "Content-Type: application/json"
})
@POST("v4/MyStore/data")
Observable<Headers> requestStore(@Body MyStoreRequest request);
Run Code Online (Sandbox Code Playgroud)

例子,

@Headers({
        "Authorization: Bearer ca0df98d-978c-410b-96ec-4e592a788c18",
        "Content-Type: application/json"
})
@POST("v4/MyStore/data")
Observable<Headers> requestStore(@Body MyStoreRequest request);
Run Code Online (Sandbox Code Playgroud)