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

OpenAPI 生成器 - Java 11 本机 HTTP 客户端模板:如何添加自定义标头

易雅畅
2023-03-14

我正在使用OpenAPI生成器生成一个Java11 HTTP客户端,以支持swagger兼容的服务。

问题是:这个服务需要基本的身份验证,但它不会用<code>WWW Authenticate</code>头来挑战客户端,因此Java 11 HTTP客户端不会发送用构建器配置的基本身份验证。解决方法是直接在请求中添加Authorization头,如本线程中所建议的。

现在:从4.3.1版开始,OpenAPI Generator不会向我公开一个自定义HTTP请求的接口,所以我想知道是否最好重写负责的模板(api.bissue:126),或者是否有一个更干净的替代方案来完成这项任务。

共有1个答案

傅丁雷
2023-03-14

我遇到了与您相同的问题,对我来说,解决方案是使用生成的Api客户端类及其请求拦截器字段。它允许在将请求标头发送到服务器之前自定义请求标头:

ApiClient client = new ApiClient();
client.setRequestInterceptor(new Consumer<HttpRequest.Builder>() {
  @Override
  public void accept(HttpRequest.Builder builder) {
    builder.header("Authorization", "Basic " + Base64.getEncoder().encodeToString("foo:bar"));
  }
});

如果您需要捕获回复标头,还有一个称为响应拦截器的备份版本。

 类似资料:
  • 我有一个这样的歌剧API: OpenAPI生成器Maven的插件为schema对象创建了一个请求类“GenerateTokenRequest”,但在API实现类中它没有使用。它生成一个方法,将所有请求的字段作为参数列表。方法如下: 所以,在这种情况下,请求类“GenerateTokenRequest”被生成,但从未使用过。任何人都可以告诉我为什么?有一种使用我的请求类的替代方法吗?我可以在Open

  • 我正在尝试使用< code >传递一些自定义的HTTP头 我试过两种配置。第一个具有“< code > mapped-request-headers ”属性: 第二个具有“”属性,具有相对配置: 但在这两种情况下,远程应用程序加载的消息头如下: 没有我试图添加到请求消息中的“test”头的跟踪。 向 中? 事实上,标题似乎在GenericMessage中“消失”了: 我不明白为什么HTTP请求中会

  • 我可以通过源代码集成功地将生成的openapi客户端添加到我的项目中。但是我必须将依赖项复制到主中,解决冲突- 所以我添加到我的和到我的依赖项。这样我就有了以下文件: : 和: 我预先执行,在将其作为子项目添加之后,我执行Gradle- 然后,Eclipse向我展示了一个问题: 我不知道从这里去哪里,寻址子文件夹中的子项目工作得很好,当我通过https://guides.gradle.org/cr

  • 我可能在尝试做一些奇怪的事情,因为这似乎不是一个常见的问题(或者可能我问错了)。我原以为这会很简单。 基本上,我正在寻找的是一种方法,除了通过使用gradle openapi生成器插件: 我所尝试的是以下(以及相关的错误): 输入pec.set(www.example.com/openapi-doc) 实际代码如下所示:

  • 问题内容: 在wsdl上使用wsimport创建了Java Web服务客户端之后,我需要为嵌入在HTTP请求中的每个肥皂消息设置Authorization标头。生成了javax.xml.ws.Service的子类后,如何将HTTP标头附加到每个传出请求中? 问题答案: 您可以将带有自定义标头的映射传递给BindingProvider(我相信您可以设置MessageContext.HTTP_REQU

  • 以下是我的Spring应用程序的相关部分: 上面的方法从未被调用。我需要成为一个Spring bean,因为我需要向它注入其他依赖项。 以下是文件的相关部分: