使用 JAX-WS:如何设置用户代理属性

2023-11-22

我对此进行了搜索并发现了一些未遂事件。我创建了一个 java 客户端来使用 JAX-WS 来使用 Web 服务。使用 JAX 时有没有办法设置 HTTP_USER_AGENT 值?我希望在特定客户端(我的)访问它时获得我的网络服务日志,因此我想要一个自定义值。

我见过在系统属性中设置它的选项,但这似乎不起作用。生成的 JAX 类似乎没有对连接对象的直接引用,因此我不知道如何操作这些类。

任何帮助都会很棒。 谢谢 英石


JAX-WS 中此类问题的解决方案是实现一个 SoapMessage Handler(接口:SOAPHandler)。 在该处理程序中,您将 HTTP 标头插入可能已经存在的标头中,然后将控制权交给处理程序链中的下一个处理程序。

这个处理程序链的概念很好,您可以为特定目的(安全、日志记录等)创建小类。

在您的客户端中,您可以在发送任何请求之前配置处理程序链:

// HandlerChain installieren
Binding binding = ((BindingProvider) port).getBinding();
List hchain = binding.getHandlerChain();
if (hchain == null) {
  hchain = new ArrayList();
}
hchain.add(new HTTPUserAgentHandler());
binding.setHandlerChain(hchain);

这是 HTTPUserAgentHandler 的代码:

public class HTTPUserAgentHandler implements SOAPHandler<SOAPMessageContext> {

  @Override
  public boolean handleMessage(SOAPMessageContext context) {
      boolean request = ((Boolean) context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();

      if (request) {
          @SuppressWarnings("unchecked")
          Map<String, List<String>> headers = (Map<String, List<String>>) context
                  .get(MessageContext.HTTP_REQUEST_HEADERS);
          if (null == headers) {
              headers = new HashMap<String, List<String>>();
          }
          headers.put("HTTP_USER_AGENT", Collections.singletonList("user_agent"));
          context.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
      }
      return true;
  }

  @Override
  public boolean handleFault(SOAPMessageContext context) {
      return true;
  }

  @Override
  public void close(MessageContext context) {}

  @Override
  public Set<QName> getHeaders() {
      return null;
  }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JAX-WS:如何设置用户代理属性 的相关文章

随机推荐

  • 有没有办法从某种类型的 JSON.NET JObject 中删除节点?

    我有一个从 API 返回的 JSON 对象 其中一些节点是数组 有什么方法可以让我完全根据 类型 将它们从对象中提取出来吗 例如 result field1 value1 field2 val2 val3 field3 val4 field
  • laravel 自动删除 php artisanserve 上的 server.php

    我在 Windows 环境中使用 laravel 5 6 使用 php 7 2 与 xampp 一起安装 安装 laravel 后 php artisanserve 命令可以工作 但会自动删除 server php 文件 只是为了避免这个问
  • 如何设置 openai-gym 环境以特定状态而不是“env.reset()”开始?

    今天 当我尝试在openai gym环境下实现一个rl agent时 我发现一个问题 似乎所有的agent都是从最初始的状态开始训练的 env reset i e import gym env gym make CartPole v0 in
  • 我需要一些有关 HTML 中嵌套列表的指导 我有一个布局 我想像下面这样构建 嵌套一个未被包裹的元素是一件可怕的事情吗 li 我相当确定它不符合标准 但不知道它会产生什么不良影响 ul li h1 header 1 h1 li li ul
  • Mongoose 将存储的 UTC 日期转换为本地时间?

    我想知道这是否正常 或者我是否在架构设置或查询过程中遗漏了某些内容 我的应用程序和猫鼬在 mongodb 中正确存储了 UTC 日期 通过 mongo shell 查看文档可以确认这一点 当我通过 mongoose 从 mongodb 检索
  • 在 SQL Server 中将 varchar 转换为 uniqueidentifier

    我无法控制其架构的表包含定义为 varchar 50 的列 该列以 a89b1acd95016ae6b9c8aabb07da2010 格式存储唯一标识符 无连字符 我想将它们转换为 SQL 中的唯一标识符 以便传递给 Net GUID 但是
  • 在 Spring MVC 中从控制器查找区域设置

    我正在使用 Spring 3 0 如何在基于注释的控制器中找到由 LocaleResolver 设置的当前区域设置 Thanks 您可以声明类型的参数Locale在你的控制器方法中 RequestMapping public ModelAn
  • 使用 Java API 将 Parquet 格式写入 HDFS,而不使用 Avro 和 MR

    简单的写法是什么实木复合地板格式 to HDFS 使用Java API 通过直接创建 Parquet SchemaPojo 的 不使用avro and MR 我发现的示例已经过时 并且使用已弃用的方法 还使用 Avro spark 或 MR
  • 应用程序池和工作进程线程之间有什么关系?

    我正在对 ASP NET 应用程序中的重新启动进行故障排除 该应用程序每天重新启动大约 20 次 我们强烈怀疑应用程序的一部分 因为当这一特定功能投入生产时 重启就开始了 我已经使用 log4net 库向这些页面添加了一些日志记录 但我在解
  • 将文本附加到 RichTextBox 的最快方法?

    我有一个带有 RichTextBox 控件的应用程序 其中的过程几乎总是添加文本 RichTextBox1 Text vbNewLine Title AlbumName RichTextBox1 Text vbNewLine Genre A
  • 序数编码或 One-Hot 编码

    如果我们不确定分类特征的性质 例如它们是名义特征还是序数特征 我们应该使用哪种编码 序数编码还是单热编码 关于这个主题有明确的规则吗 我看到很多人在没有方向的分类数据上使用序数编码 假设有一个频数表 some data some col v
  • Swift 中开关盒的详尽条件

    苹果文档 says 每个 switch 语句都必须是详尽的 也就是说 每一个可能的 正在考虑的类型的值必须与其中之一匹配 切换案例 所以在新的 Xcode 中我放置了这样的代码 println UInt16 min Output 0 pri
  • C# 通过 T 的成员对列表 进行二进制搜索

    我有一个基类Event with a DateTime member TimeStamp 许多其他事件类将从中派生 我希望能够快速搜索事件列表 因此我想使用二分搜索 列表数据按时间戳排序 但同时发生的事件可能存在重复的时间戳 所以我开始写这
  • Node.js MySQL 模块 - 抛出错误; // 重新抛出非 MySQL 错误;

    今天我尝试了来自 w3schools 的 node js mysql 片段 var mysql require mysql var con mysql createConnection host localhost user roots W
  • 如何在 Coq 中使用归纳类型来处理案例

    我想使用destruct通过案例来证明陈述的策略 我在网上读了几个例子 但我很困惑 有人可以更好地解释一下吗 这是一个小例子 还有其他方法可以解决它 但尝试使用destruct Inductive three zero one two Le
  • Visual Studio C++ 是否可以在不链接的情况下编译对象

    我正在运行 VS 2010 SP1 并且有一个每周运行一次的特殊分析配置 因为构建服务器需要很长时间来分析所有内容 我希望此配置无需链接即可运行 如果分析通过了项目中的所有代码 那么我希望构建继续进行下一个项目而不链接 我看不出有什么方法可
  • Python套接字接受块-防止应用程序退出

    我编写了一个非常简单的 python 类 它等待套接字上的连接 目的是将此类粘贴到现有应用程序中 并将数据异步发送到连接的客户端 问题是 当等待 socket accept 时 我无法通过按 ctrl c 来结束我的应用程序 我也无法检测到
  • JDBC 到 Spark Dataframe - 如何确保均匀分区?

    我是 Spark 新手 正在致力于通过 JDBC 从 Postgres 数据库表创建 DataFrame 使用spark read jdbc 我对分区选项有点困惑 特别是分区列 下界 上限 and 分区数 文档似乎表明这些字段是可选的 如果
  • JSON - Spring MVC:如何将 json 数据发布到 spring MVC 控制器

    我在发布 JSON 数据时遇到问题jsp to controller 每次我尝试都会收到 ajax 错误Bad Request 我对 JSON 很陌生 我真的不知道我做错了什么 我搜索并尝试了一些可以在该网站中找到的示例 但仍然遇到问题 在
  • 使用 JAX-WS:如何设置用户代理属性

    我对此进行了搜索并发现了一些未遂事件 我创建了一个 java 客户端来使用 JAX WS 来使用 Web 服务 使用 JAX 时有没有办法设置 HTTP USER AGENT 值 我希望在特定客户端 我的 访问它时获得我的网络服务日志 因此