2012-02-14 35 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>