2012-02-14 34 views
1

我有一个联邦政府(即非常安全良心)SOAP服务,我必须连接到一个项目。我曾遇到的问题是,我得到了可怕的我可以在https axis2客户端上捕获明文请求SOAP信封吗?

SEVERE: SOAP header missing 
    org.apache.axis2.AxisFault: SOAP header missing 
    at org.apache.rampart.handler.RampartReceiver.setFaultCodeAndThrowAxisFault(RampartReceiver.java:180) 

Throwable的堆栈跟踪

我生成与wsdl2code客户存根,只是调用

GetResponseTypeDef resp = stub.getRequest(requestypdef, headerTypeDef); 

headerTypeDef似乎是正确填充服务请求的标题信息。

我想捕获正在发送的原始的明文SOAP SOAP请求,但终端使用https,并且我对该服务的可见性为零。所以wireshark真的不是一个选择。

我在Linux上使用以下内容: 的Axis2 1.5.4 壁垒1.5.1 WSS4J 1.5.10

我相当肯定,我派了SOAP头,但我需要证明它。此服务几乎使用WS- *的每个子项目,包括安全性,策略,加密和数字签名,因此只有大约100个地方可能导致此事失败。

任何帮助,将不胜感激。

回答

1

设置代理服务,如Charles,并将其重定向到您的HTTPS端点。通过这种方式,您可以在调用进行加密并将XML有效内容打印出来之前将其锁定。在附注中,您可能想要处理您的接受率。

0

是否可以添加org.apache.axis.transport记录器来查看通过电线发送了哪些xml?例如,她是我如何在我的log4j配置中定义的:

<category name="org.apache.axis.transport"> 
    <priority value="DEBUG"/> 
    <appender-ref ref="CONSOLE"/> 
</category>