当前位置: 首页 > 知识库问答 >
问题:

如何在响应回调时获取改进请求头

尉迟卓
2023-03-14

我使用拦截器设置请求的头,如下所示:

    @NotNull
    @Override
    public Response intercept(@NonNull Chain chain) throws IOException {
        Request request = chain.request();
        Request.Builder builder = request.newBuilder();

        builder.header("Authorization", "[token]");
        builder.header("UniqueKey", "[key]");
        etc;

        return chain.proceed(builder.build());
}

并且一切按预期工作(服务器看到并接受)。

我的问题是,当响应到来时,我想在我的应用程序中读取这些标题。

@Override
    public void onResponse(@NonNull Call<T> call, Response<T> response) {

}

我使用call.request.headers(),但总是返回一个空的String[]。所有其他属性(url、params、verb)都可以访问,只有标头丢失了。

我在请求头中设置了一个键,基本上我想在收到响应时检查这个键。

有没有线索为什么标头不可见以及如何在onACK()中获取它们?

共有1个答案

牧飞鹏
2023-03-14

一个例子:

List<Header> headerList = response.getHeaders();
for(Header header : headerList) {
    Log.d(TAG, header.getName() + " " + header.getValue());
}

必须在<code>onResponse<code>方法中使用。另一种方式:

// get headers
Headers headers = response.headers();
// get header value
String cookie = response.headers().get("Set-Cookie");
 类似资料:
  • 我正在测试改进,以与凌空比较,我很难得到我的请求的回应。例如,我做这样的事情: 它工作了,对象< code>toto被设置,但是出于测试目的,我还想显示服务器返回的JSON响应。 所以我正试图从读取,这是一个。不幸的是,我总是得到一个了。 我尝试使用Retrofit中的Utils类,但我得到了相同的错误。

  • 我正在使用带有Robospice(1.4.14)的Revovit(1.6.1)从一些服务中获取数据(响应应该在JSON中)。 在某些情况下,我可能会收到一个HTML错误页面,而不是一个JSON响应。服务器返回一个200状态代码,我不能改变它。在这种情况下,RoboSpice将调用方法。 在那里,我可以获得原始的expetion,但正文是。我是这样得到的: 在研究了reverfit的源代码之后,我发

  • 问题内容: 我有一个包含表单(帖子)的html。单击某些提交按钮时,我会收到JSON响应。 如何获取此JSON? 如果我不截取请求,则json将显示在Web视图上,所以我想应该使用(我正在使用API​​ 12),但是我不知道如何在其中获取json。 还是有更好的方法,例如拦截响应而不是请求? 谢谢 问题答案: 您应该重写的方法

  • 我正在使用SpringWebFlux创建RouterFunction和Handler。我的处理函数有@Aspect,如下所示,用于在数据库中存储ServerRequest body和ServerResponse body。但当我试图得到一个对象时,我的请求就被绞死了。是否有实现此功能的示例代码。

  • 我是iOS和Swift的新手,我正在尝试使用AlamoFire3.4.0来做一个web请求。当我的请求成功时,一切都很好。但是,如果我的请求失败,服务器将返回300或更大的状态代码,以及响应体中的一些JSON,其中包含关于请求失败原因的更多信息。例如,我正在与之交谈的API要求对每个请求进行身份验证。如果身份验证由于某种原因失败,我将返回401,响应体中的JSON将为: 我发出此请求的代码如下所示