使用 Axis Client API 时未调用将 HTTP 标头添加到 HTTP 请求的处理程序

2023-11-26

我正在使用 Axis API 访问 Axis HTTP 服务器。 API的文档可以找到here.

我正在使用以下代码将处理程序添加到服务器。service属于 java.xml.rpc.Service 类型

    HandlerRegistry registry = service.getHandlerRegistry();
    QName serviceName = new QName(url, "MyServiceClass");

    List<HandlerInfo> handlerChain = new ArrayList<HandlerInfo>();
    HandlerInfo handlerInfo = new HandlerInfo(MyHandler.class, null, null);
    handlerChain.add(handlerInfo);
    registry.setHandlerChain(serviceName, handlerChain);

我知道服务名称是正确的,因为我在对服务对象的后续调用中获得了正确的输出。

不知何故,处理程序没有被调用。这是处理程序类。 我的意图是将自定义标头添加到 HTTP 请求在将请求转发到服务器之前。

import javax.xml.namespace.QName;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;

public class MyHandler extends BasicHandler {

    @Override
    public void init() {
        System.out.println("init called");
        super.init();
        System.out.println("init called");
    }

    @Override
    public void cleanup() {
        super.cleanup();
        System.out.println("cleanup called");
    }

    @Override
    public void invoke(MessageContext mc) throws AxisFault {
        System.out.println("invoke called");
    }

    public QName[] getHeaders() {
        System.out.println("getHeaders");
        return new QName[1];
    }
}

上面的代码有什么问题?

还有其他方法可以使用 Apache Axis API 修改 HTTP 标头吗?


好吧。这应该可以解决问题:

1 - 创建一个 wsdd 文件(例如/tmp/test.wsdd)包含这个:

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <handler name="test" type="java:axistest.TestHandler" />
 <transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender">
   <requestFlow>
    <handler type="test"/>
   </requestFlow>
 </transport>
</deployment>

2 - 确保所有轴库都在您的类路径中,然后运行:

java org.apache.axis.utils.Admin client /tmp/test.wsdd

3 - 步骤 2 将生成 client-config.wsdd。将其复制到您的项目中,并确保项目运行时它位于类路径中。

4 - 所有 Web 服务调用(通过 Http 传输)都将通过 TestHandler1 类进行路由

这是我的 TestHandler1 类(对你的处理程序进行了轻微修改以访问 MIME 标头):

package axistest;

import javax.xml.namespace.QName;
import javax.xml.soap.MimeHeaders;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;

public class TestHandler1 extends BasicHandler {

@Override
public void init() {
    System.out.println("init called");
    super.init();
    System.out.println("init called");
}

@Override
public void cleanup() {
    super.cleanup();
    System.out.println("cleanup called");
}

@Override
public void invoke(MessageContext mc) throws AxisFault {
    System.out.println("invoke called");
    System.out.println("=----------------------------------=");
    MimeHeaders mimeHeaders = mc.getMessage().getMimeHeaders();
    mimeHeaders.addHeader("X-Test", "Hello");
    System.out.println("Headers : \n " + mimeHeaders);
}

public QName[] getHeaders() {
    System.out.println("getHeaders");
    return new QName[1];
}

}

当我在我的盒子上运行它时,我看到正在调用这些处理程序方法:

- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
init called
init called
invoke called
=----------------------------------=
Headers : 
 org.apache.axis.message.MimeHeaders@761eec35
.
.
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Axis Client API 时未调用将 HTTP 标头添加到 HTTP 请求的处理程序 的相关文章

  • 使用 Jersey Client 忽略自签名 ssl 证书 [重复]

    这个问题在这里已经有答案了 我正在使用 Jersey 客户端库对 jboss 上运行的其余服务运行测试 我使用自签名证书在服务器上正确设置了 https 在本地主机上运行 但是 每当我使用 https url 运行测试时 都会收到以下错误
  • 检索和设置 IntelliJ IDEA 插件开发的拆分窗口设置

    我正在编写一个 IntelliJ IDEA 插件 用于保存打开选项卡的会话 称为选项卡会话 https github com alp82 idea tabsession 这个问题是后续问题IntelliJ IDEA 插件开发 保存选项卡组
  • Java 多头中的斐波那契计算显示负值

    我的斐波那契计算器工作正常 但当数字增加时 结果会出现负值 就像它是一个Integer超过其最大值 它正在使用缓存java util Map
  • Swagger 3.0.0:如果没有 SwaggerConfig 和 @Profile,则无法在生产中禁用

    我正在从 2 x 升级到 SpringFox Swagger 3 0 0 它引入了 Spring Boot 启动器springfox boot starter消除了对基于 2 x 的需要的依赖性SwaggerConfig NO LONGER
  • ggplot 直方图相对于轴的位置不正确

    我试图这样绘制直方图 Todo lo haremos con base en un variable aleatoria Uniforme 0 1 set seed 26 n 10000 U lt runif n n Supongamos
  • Spring Rest-API - 403 禁止错误响应

    我是 Spring 新手 我正在编写 REST API 我收到 403 删除 放置禁止错误 以下是我正在处理的示例 RequestMapping value noteId method RequestMethod PUT public Re
  • 无法让远程 EJB 与 Wildfly 上的 EJB 客户端 API 配合使用

    我目前正在努力让远程 EJB 调用在 wildfly 8 x 和 9 x 上工作 详细来说 它是关于使用 EJB 客户端 API 方法从独立客户端应用程序 而不是从另一个应用程序服务器 进行远程调用 远程命名方法适用于我 但不适用于我的场景
  • Android - 内容值覆盖现有行

    我正在尝试使用插入值ContentValues 我已将 5 个值插入到 5 列中 运行应用程序后 我只有最后一组值的行ContentValues 前四组未插入 ContentValues cv new ContentValues cv pu
  • 如何使用 Gradle 2.10 将 ANTLR 词法分析器语法导入到另一个语法中?

    我一直在和 Terence Parr 一起学习 ANTLR 4权威的 ANTLR 4 参考 到目前为止我一直在使用 Gradle 2 10 及其内置 ANTLR 插件进行跟踪 然而 我在获取一些我从第 4 章第 38 41 页改编的代码以使
  • Stream#limit 返回的元素是否可以少于预期?

    如果流s下面至少有n元素 流在什么情况下sLimit可能少于n元素 如果有的话 Stream sLimit s limit n 提问原因 在这个答案 https stackoverflow com a 28082107 829571 我读到
  • java中main的返回类型

    我想知道为什么java中main方法只有void返回类型 public static void main String args 为什么main方法除了void之外没有其他返回类型 Thanks 简短的回答是 因为这就是语言规范 http
  • 如何修复错误“AttributeError:‘模块’对象在 python3 中没有属性‘客户端’?

    以下是我的代码 import http h1 http client HTTPConnection www bing com 我认为没问题 但是 python 给了我以下错误 AttributeError 模块 对象没有属性 客户端 我想知
  • Java中通过FTP创建文件夹层次结构

    Java 是否有现成的功能可以在远程 FTP 服务器上创建文件夹层次结构 Apache Commons 确实提供了 FTP 客户端 但我找不到创建目录层次结构的方法 它确实允许创建单个目录 makeDirectory 但创建整个路径似乎并不
  • Ubuntu 的打包 - Web 应用程序

    Web 应用程序没有与 C 或类似文件不同的 make 文件 但是 它需要放置在特定的目录中 例如 var www 我是 Linux 打包新手 所以我的问题是 如何将我的应用程序打包到 deb 中 以便在安装时将其放入 etc myprog
  • 使用java读取Excel工作表的单列

    我有一张 Excel 表格 我想编写一个方法 该方法将参数作为要读取的列号 并返回一个由该列中的所有数据组成的数组 然后将该列元素放置在 xml 工作表中 我怎样才能编写一个方法来做到这一点 使用 Apache POI 您可以在他们的使用页
  • jsf 中的类型未找到属性

    我正在尝试调用 jsf 中使用 primefaces 的属性 但我有错误 500 在托管bean PersonelBean 类型上找不到 我正在使用 hibernate jsf 和 spring PersonelBean java Mana
  • 使用 Mockitos 传递参数化输入

    我正在使用 Mockito 进行单元测试 我想知道是否可以使用 Junit 测试中的方式发送参数化输入参数 e g InjectMocks MockClass mockClass new MockClass Test public void
  • Jar Manifest 文件的使用混乱

    我正在阅读使用 jar 工具打包 java 应用程序 我注意到 META INF 目录下创建了一个清单文件 对于一个简单的应用程序来说 感觉它没有任何作用 我在 stackoverflow 上搜索以了解 Manifest 文件的用法 我碰到
  • Google App Engine数据存储区字符串编码问题

    你好 我正在使用 Google App Engine 进行一个项目 并且需要存储一些字符串 我正在使用 Java 和JDOHelper getPersistenceManagerFactory transactions optional 在
  • Admob - 没有广告可显示

    你好 我尝试制作一些在 Android 手机上显示广告的示例程序 并尝试在 v2 2 的模拟器上测试它 代码中的一切似乎都很好 但调试器中的 AdListener 表示 响应消息为零或空 onFailedToReceiveAd 没有广告可显

随机推荐

  • FF /4 中的 /4 是什么意思?

    我发现的一个网站通常指的是x86 文档有一些带有斜杠和数字的指令代码 例如 jmp接近绝对间接给出FF 4 然而jmp远绝对间接给出FF 5 做什么的 4 and 5 mean 为了运行一个快速的小测试 我附加了一个 32 位进程 分配了一
  • Ext js 按内容对自定义列进行排序

    我在 ext 中有一个带有一些自定义列的网格 我希望能够对此列进行排序 我想按其中显示的内容对其进行排序 但实际上我只是不知道如何为列定义排序器这不会基于 dataIndex 我尝试使用自定义模型 但我无法让它工作 text Parent
  • Mono Mkbundle 是否生成本机代码

    Mono 生成的普通 EXE 在 IL 中 我想生成本机可执行文件 使用 mkbundle 生成本机 Exe 还是应该使用 Mono AOT 是的 mkbundle 生成本机可执行文件 例如 在 Linux 上 这是我的 NET 程序集 f
  • 如何使用 dotnet Standard 访问 Azure Function App ConnectionString

    我的Azure Function App定义了ConnectionString 我想从用 dotnet standard 2 0 编写的 C 函数中检索它 我尝试过添加System Configuration ConfigurationMa
  • 检测鼠标是否位于列边框上方

    有谁知道如何通过 jQuery 或 JavaScript 检测鼠标是否位于列边框或单元格边框上 我想在特定表上实现列大小调整 任何帮助表示赞赏 您应该检查 offsetX 和 offsetY 是否小于边框宽度 如果是 则您在边框中 还要检查
  • 如何在 3D 散点图中添加平面

    使用 Blender 创建了这个模型 可以在A形框架中看到这个链接 这个模型很棒 它概述了我在这里想要完成的任务 基本上 我没有名字 而是用点来象征一个特定的平台 在我看来 以当前最先进的水平实现这一目标的最佳方法是通过Plotly 3D
  • FB.getLoginStatus 从不触发 Facebook 的 JavaScript SDK 中的回调函数

    打电话很简单FB init 就在之前 进而FB getLoginStatus callback 不触发回调函数 经过一些调试 我认为 SDK 停留在 正在加载 即FB Auth loadState loading 阶段并且永远不会进入 已加
  • Windows 上的 Gem 更新 - 它坏了吗?

    这是后续这个问题 当我发出gem updateWindows 上的命令 每当它到达 gem 的最新版本没有 Windows 二进制文件 它会尝试 构建本机扩展当然会失败 例如 Updating sqlite3 ruby Building n
  • 应用程序主题,根据应用程序主题名称更改和 ImageView src

    我正在尝试为我的问题找到解决方案 但我无法找到任何地方 甚至无法通过谷歌搜索 我正在编写一个使用主题的 Android 应用程序 用户可以动态切换它们 并且应用程序重新启动以应用所选主题 这运作良好 但是 我找不到根据所选主题更改图像视图元
  • 在哪里撤销 Android 上授予的 Google API 权限?

    我正在使用一些示例代码 http code google com p google api java client source browse picasa android sample src main java com google a
  • SignalR + 通过操作方法将消息发布到集线器

    我正在使用 SignalR 的集线器功能 https github com SignalR SignalR 向所有订阅的客户端发布消息 public class NewsFeedHub Hub public void Send string
  • 从文本中删除锚点

    我需要从某些文本中删除锚标记 但似乎无法使用正则表达式来完成此操作 只是锚标记 而不是其内容 例如 a href http www google com target blank google a 会成为google 确切地说 使用正则表达
  • 如何访问用户控件 WinForm 中托管表单上的控件

    在 Visual Studio 中 如何访问托管用户控件的表单上的控件 例如 当用户控件中的文本框中的文本发生更改时 我希望另一个用户控件中的另一个文本框中的文本也发生更改 这两个用户控件都托管在同一窗体上 提前致谢 如果您需要不同的 UI
  • Pandas 将表写入 MySQL:“无法回滚”

    我需要帮助才能使其正常工作 我有一个pd DataFrame df 我需要将其加载到 MySQL 数据库 我不明白错误消息的含义以及如何修复它 任何帮助将不胜感激 这是我尝试过的 import MySQLdb from pandas io
  • 如何查看 Sybase 中的列元数据?

    我有一个同事给我的列列表 但这些列驻留在数据库中的不同表中 Sybase中有某种工具可以查询列所属的表吗 我已经尝试过谷歌搜索这种工具 但到目前为止还没有成功 syscolumns 保存列元数据 从 syscolumns 中选择 其中 na
  • Jupyter Notebook:在代码块中启用垂直滚动

    如何在 jupyter 笔记本的代码块中启用垂直滚动 我以前不小心做过 但现在无法重现 我发现已设置autoscroll true使用文本编辑器在文件本身中 然而 我这样做了 它已经有一个设置 scrolled true 在笔记本中 它只有
  • 如何在 Sass 中使用 Ruby/Rails 变量?

    有没有办法在 Sass 文件中使用 Ruby 应用程序中的变量 您可以将 erb 扩展名添加到 sass 文件中 然后像在常规 erb 文件中一样添加变量 更多信息 http guides rubyonrails org asset pip
  • 如何更改 .vimrc 在 .vim 中的位置

    如何更改 vim 文件夹和 vimrc 文件的位置 以便可以使用两个 或更多 独立版本的 vim 有没有办法在从源代码编译 vim 时进行配置 也许是 feature h 中的一个条目 我为什么要做这样的事情 我必须处理使用 python2
  • 如何知道 matchTemplate 是否找到对象?

    I used this回答并编写了我自己的程序 但我有一个具体的问题 如果图像中没有物体 matchTemplate不会引发错误 而且我不知道有什么方法可以检查是否matchTemplate无论是否找到该对象 任何人都可以给我建议 或者给我
  • 使用 Axis Client API 时未调用将 HTTP 标头添加到 HTTP 请求的处理程序

    我正在使用 Axis API 访问 Axis HTTP 服务器 API的文档可以找到here 我正在使用以下代码将处理程序添加到服务器 service属于 java xml rpc Service 类型 HandlerRegistry re