android - 如何在 Android 的 Retrofit 中获取 header 响应?

标签 android retrofit

这是我的终点:

@POST("v4/MyStore/data")
Observable<Headers> requestStore(@Body MyStoreRequest request);

我正在尝试获得这样的响应:

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

我收到如下错误:

Exception: retrofit2.adapter.rxjava.HttpException: HTTP 403 Forbidden

在 postman 中我收到回复:

Connection →keep-alive
Content-Length →0
Content-Type →application/json; charset=utf-8
Date →Mon, 03 Sep 2018 18:47:30 GMT
MYid →f028df50-c8c5-4cce-92e7-70130345ba46

我做错了什么?

最佳答案

您必须使用 Response 作为您的响应模型,因为您的 api 正在使用代码 403 输入错误流

 @POST("v4/MyStore/data")
 Observable<Response<Void>> requestStore(@Body MyStoreRequest request);

现在当你消费响应时

 requestService.requestStore(request)
            .subscribeOn(Schedulers.io())
            .observeOn(Schedulers.computation())
            .map(response -> {
               Log.d("Response",""+response);
                return response.header();
            }).subscribe(headers -> {
                        Log.d("Response",""+headers);
                    },
                    error -> {
                       Log.d("ERRRROOOR","Error");
                    });

response.header() 即使您的 api 失败,也会返回您想要的 header

关于android - 如何在 Android 的 Retrofit 中获取 header 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52155369/

相关文章:

java - 图像使应用程序崩溃

java - 安卓 : Implement Broadcast Receiver for ClipboardManager

java - android-numberpicker 可以实例化成View吗?

android - 使用 Reactivex 的消费者接口(interface)

android - HTTPS 网址未加密

android - 改造中的多个排队导致内存不足错误?

java - Retrofit 中的自定义超时消息

android - Appcelerator 4 在 Mac 上找不到 Android SDK

android - 在后台收听下载进度

Android - 如何使用 PermissionsDispatcher 一次请求多个权限?