2013-12-08 131 views
1

如何使用SOAPEnvelope MIME頭文件進行授權搶先?用java soap客戶端進行預授權

SOAPEnvelope envelope = soapPart.getEnvelope(); 
MimeHeaders mimeHeaders = soapMessage.getMimeHeaders(); 
mimeHeaders.addHeader("Content-type", "text/xml"); 

String authorization = new sun.misc.BASE64Encoder().encode(("user:pass").getBytes()); 
mimeHeaders.addHeader("Authorization", "Basic " + authorization); 
+0

究竟是什麼問題? –

+0

Soap服務在這樣調用時不會授權請求。供應商告訴我使用搶先授權類型來使其工作。雖然使用SoapUI進行測試的一切正常,但我不知道如何讓我的客戶端授權預設。 – J33nn

+0

您應該首先調試並檢查'authorization'是否與您在SoapUI中發送的值相同(即是相同的字符串)。考慮'getBytes()'使用的平臺默認編碼可能會或可能不是你想要的。 –

回答

0

添加SOAPAction。我也面臨同樣的問題。在我的情況下,SOAPAction是操作名稱。

MimeHeaders hd = soapMessage.getMimeHeaders(); 
hd.addHeader("SOAPAction", "getUserDetails"); 
String authorization = new sun.misc.BASE64Encoder().encode((username+":"+password).getBytes()); 
hd.addHeader("Authorization", "Basic " + authorization); 
+0

請不要將相同的答案發布到多個問題上。如果問題基本相同,請將[標記](https://stackoverflow.com/privileges/flag-posts)作爲重複項。否則,請自定義問題的答案。 –