Java SAAJ基本身份验证

8
我有一个基本的SOAP服务端点,实际上它是SAP ECC,提供了一个服务。我已经使用SOAPUI 4.5测试了该服务,并且在使用HTTP身份验证时正常工作,预先检查好像可以。我看到一个出站的“Authorization:Basic BASE64”,服务做出了适当的响应。
现在我正在尝试将其转换为Java。我认为我应该采用SAAJ方法:
 SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
 SOAPConnection soapConnection = soapConnectionFactory.createConnection();
 String url = "http://SAPSERVER:8006/sap/bc/srt/rfc/sap/z_lookup_generic_prototype/300/z_user/z_user_binding";
 SOAPMessage message = messageFactory.createMessage();
 SOAPMessage response = connection.call(message, url);

但我找不到添加HTTP身份验证的方法。我相信SAAJ提供了控制SOAP消息的手段,但是如何添加身份验证呢?是否有其他值得考虑的替代方案?

1个回答

21

从这个页面开始:https://www.coderanch.com/how-to/java/WebServicesHowTo

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接