如何查看Axis2发送和接收的内容?

时间:2010-07-29 08:22:20

标签: java http web-services axis2 axis

我有Axis2创建的Web服务客户端。此服务使用SSL和WS-Security,因此我使用rampart。我认为我的客户端发送了正确的查询,但我得到了例外:

org.apache.axis2.AxisFault: Must Understand check failed for header http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd : Security
at org.apache.axis2.engine.AxisEngine.checkMustUnderstand(AxisEngine.java:97)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:364)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at pl.firstdata.www.wdx.business.card.CardServiceStub.getBalance(CardServiceStub.java:1570)
at pl.firstdata.www.wdx.business.card.wdx_client.main(wdx_client.java:164)

有没有办法通过HTTP标头查看“裸”查询和响应?

虽然这项服务使用SSL,但我认为我不能使用HTTP监视器,这应该在“应用”WS-Security之后但在SSL之前由axis2完成。我可以在我的模拟器上启用此类日志记录(不使用SSL),它看起来像是:

POST /webservices/emu/get_info.hdb HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: ""
User-Agent: Axis2
Host: 127.0.0.1:8765
Content-Length: 4585

<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"><soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1"><xenc:EncryptedKey Id="EncKeyId-0D71FF61F3796881F812803190645315"><xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<wsse:SecurityTokenReference><wsse:KeyIdentifier ...
...

2 个答案:

答案 0 :(得分:2)

使用tcpmon工具。

请注意,在大多数基于Linux的安装中,这很可能是为您构建的。完成构建过程后,您可以在Linux上的$ {AXIS2C_HOME} / bin / tools或MS Windows上的%AXIS2C_HOME%\ bin \ tools中找到可执行文件。

答案 1 :(得分:0)

我将stuneltcpmon一起使用。步骤进行:

  1. 我的axis2应用正常进行HTTP查询;此查询将发送至tcpmon
  2. tcpmon记录并将查询发送至stunel
  3. stunel添加SSL并将加密后的查询发送到目标服务器
  4. stunel收到加密回复,对其进行解密并发送回tcpmon
  5. tcpmon记录已解密的响应并将其发送到我的axis2应用