我有一个联邦政府(即极其安全的良心)SOAP服务,我必须为项目连接。我遇到的问题是我得到了可怕的
SEVERE: SOAP header missing
org.apache.axis2.AxisFault: SOAP header missing
at org.apache.rampart.handler.RampartReceiver.setFaultCodeAndThrowAxisFault(RampartReceiver.java:180)
可抛出的堆栈跟踪
我使用wsdl2code生成客户端存根并只调用
GetResponseTypeDef resp = stub.getRequest(requestypdef, headerTypeDef);
headerTypeDef似乎已正确填充了服务请求的标头信息。
我想捕获发送的原始,明文SOAP xml请求,但端点使用https,我对服务的可见性为零。所以wireshark真的不是一个选择。
我在linux上使用以下内容: axis2 1.5.4 城墙1.5.1 wss4j 1.5.10
我很确定我发送了SOAP标头,但我需要证明它。该服务几乎使用了WS- *的每个子项目,包括安全性,策略,加密和数字签名,因此只有大约100个地方可能导致此事件失败。
任何帮助都将不胜感激。
答案 0 :(得分:1)
设置Charles之类的代理服务,并将其重定向到您的HTTPS端点。这样,您可以在加密之前捕获调用并打印出XML有效负载。另外,您可能希望处理您的接受率。
答案 1 :(得分:0)
是否可以添加org.apache.axis.transport
记录器以查看通过网络发送的xml?例如,她就是我在log4j配置中定义它的方式:
<category name="org.apache.axis.transport">
<priority value="DEBUG"/>
<appender-ref ref="CONSOLE"/>
</category>