这是我的终点:
@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/