2014-10-08 129 views
0

我正在使用Java中的基於SOAP的Web服務。我在SOAP UI中測試了webservice,試圖發送請求併成功獲得響應。該請求僅在我手動添加安全性 wsse:安全併發送有效的用戶名和密碼時才起作用。只有這樣我才能得到有效的答覆。Java客戶端SOAP請求中的WSS頭文件

現在我想通過一個簡單的JAVA代碼發送請求,得到一個響應。

我用wsimport來創建存根文件。

我看不到任何生成的用於設置用戶名&密碼的java文件。 我們需要如何設置用戶名&密碼並傳遞給請求?

將安全()服務用於非安全()服務會有什麼不同嗎?

讚賞。

回答

2

你看不到的web服務安全性相關的標記(即wsse:Security等),在您的存根因您的存根是您xsd模式和WSS豆是有它的特定xsd定義自己的標籤(標準例如soap,您可以在<soap:envelope>內發送您的請求,但這個相關標籤不在您的存根中)。

要將WSS功能添加到您的Java客戶端,您可以使用apache WSS4J。爲了增加一個用戶名和密碼,你的問題問,你可以使用下面的代碼做到這一點:

WSSecUsernameToken builder = new WSSecUsernameToken(); 
builder.setPasswordType(WSConstants.PASSWORD_TEXT); 
// set user name an password 
builder.setUserInfo("wernerd", "verySecret"); 
// create a sample soap message 
Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG); 
WSSecHeader secHeader = new WSSecHeader(doc); 
secHeader.insertSecurityHeader(); 
// create the soap message with WSS headers 
Document signedDoc = builder.build(doc, secHeader); 
// simply print the result 
System.out.println(XMLUtils.prettyDocumentToString(signedDoc)); 

這個片斷是從Junit的 apache的WSS4J項目的測試中提取。您可以在apache WSS4J svn repository

希望這有助於

+0

感謝@albciff上UserNameTokenTest類檢查testUsernameTokenText()方法。我能夠通過請求處理程序和SOAPMessage傳遞標題和安全性。現在我能夠生成xml請求。 – Venkat 2014-10-08 22:01:41

+0

@Venkat完美':)'。 – albciff 2014-10-09 06:26:03