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

如何使用改进在post请求的拦截器中添加api密钥体

凌轶
2023-03-14

我试图使用一个拦截器将一个Api键附加到我的请求体中。我已经试过各种方法,没有一种有效..

网址:https://someapi.com/api/stories/

方法:发布

标题:接受:应用程序/json

输入: {“键”: “”}

@提供@Singleton公共拦截器拦截器(NetworkUtils和networkutil){返回链-

        RequestBody requestBody = networkUtils.createBody();
        String postBodyString = networkUtils.bodyToString(requestBody);
        Request.Builder builder = originalRequest.newBuilder();
        postBodyString += ((postBodyString.length() > 0) ? "&" : "") + networkUtils.bodyToString(requestBody);
        originalRequest = builder.
                post(RequestBody.create(MediaType.parse(Constants.NETWORKING_HEADER.CONTENT_TYPE), postBodyString)).build();
        return chain.proceed(originalRequest);
    };
}


public RequestBody createBody() {
    return new FormBody.Builder()
            .add(Constants.NETWORKING_HEADER.KEY, Constants.NETWORKING_HEADER.API_KEY).build();
}

public String bodyToString(final RequestBody request) {

    try {
        final RequestBody copy = request;
        final Buffer buffer = new Buffer();
        if (copy != null) {
            copy.writeTo(buffer);
        } else {
            return "";
        }
        return buffer.readUtf8();
    } catch (final IOException e) {
        String message = "Did not work";
        Timber.d(message);
        return message;
    }
}

共有1个答案

穆城
2023-03-14

可能重复的改型2:修改OkHttp拦截器中的请求体

@Debanjan的最后一个答案提供了一个很好的解决方案,涵盖了应用程序/json以及表单数据。

 类似资料:
  • 问题内容: 在Spring Boot应用程序中添加HttpRequest拦截器的正确方法是什么?我想做的是记录每个HTTP请求的请求和响应。 我发现了一些有关如何对较早版本的spring进行相同操作的Web示例,但这些示例与applicationcontext.xml一起使用。请帮忙。 问题答案: 由于你使用的是Spring Boot,因此我假设你希望在可能的情况下依靠Spring的自动配置。要添

  • 我找到了一些关于如何使用spring旧版本执行相同操作的web示例,但这些示例适用于ApplicationContext.xml。请帮帮忙。

  • 我们的团队决定采用改型2.0,我正在做一些初步的研究。我是这个图书馆的新手。 我想知道如何使用在我们的Android应用程序中通过改装2.0添加自定义标题。有很多教程介绍如何使用在翻新版1.X中添加标头,但由于API在最新版本中发生了很大变化,我不知道如何在新版本中适应这些方法。此外,改装尚未更新其新文档。 例如,在以下代码中,我应该如何实现类来添加额外的头?此外,未记录的对象究竟是什么?何时调用

  • 问题内容: 我将这个拦截器添加到我的OkHttp客户端中: 如何在拦截器中添加标题以进行请求? 我尝试了这个,但是我犯错了,创建新请求时我丢失了请求: 请注意,我知道我可以在创建请求时添加标头,如下所示: 但这不符合我的需求。我在拦截器中需要它。 问题答案: 最后,我以这种方式添加了标题:

  • 问题内容: 我知道如何拦截所有请求,但是我只想拦截来自我资源的请求。 有谁知道如何做到这一点? 问题答案: 如果只想拦截来自特定资源的请求,则可以使用可选的action 属性。Angular的文档请参见此处(用法>操作) 的JavaScript Plunker:http ://plnkr.co/edit/xjJH1rdJyB6vvpDACJOT?p=preview

  • 我在我的项目中使用。所有POST数据都以格式发送,并在服务器端解编入各自的bean中。类似于这样: 向服务器发送请求: 我从这里得到了REST拦截器的实现。 我想访问拦截器中的有效载荷(请求体)。由于数据是JSON格式的,因此不能作为请求参数访问。是否有一种方法可以在拦截器方法中获得请求正文?请指教。