Web services 无法传递用户名&;jaxws中的密码
我试图使用下面的客户端使用username/pwd调用一个webservice,但是我没有看到在标题中设置了username/password 客户端代码Web services 无法传递用户名&;jaxws中的密码,web-services,soap,Web Services,Soap,我试图使用下面的客户端使用username/pwd调用一个webservice,但是我没有看到在标题中设置了username/password 客户端代码 AttachmentWSImplService service = new AttachmentWSImplService(); AttachmentWS aws = service.getAttachmentWS(); BindingProvider bindingProvider = (BindingPro
AttachmentWSImplService service = new AttachmentWSImplService();
AttachmentWS aws = service.getAttachmentWS();
BindingProvider bindingProvider = (BindingProvider) aws;
SOAPBinding sopadBinding = (SOAPBinding) bindingProvider.getBinding();
sopadBinding.setMTOMEnabled(true);
bindingProvider.getRequestContext().put(bindingProvider.USERNAME_PROPERTY,"p3xferdt");
bindingProvider.getRequestContext().put(bindingProvider.PASSWORD_PROPERTY,"92mnGg1Cb14D9hVhG1W5fZra4UI=");
服务器代码
SOAPMessageContext ctx = (SOAPMessageContext) wsCtx
.getMessageContext();
java.util.Map<java.lang.String, java.util.List<java.lang.String>> headers = (Map<String, List<String>>) ctx
.get(MessageContext.HTTP_REQUEST_HEADERS);
if (headers.keySet() != null && !headers.keySet().isEmpty()) {
Iterator<String> keys = headers.keySet().iterator();
while (keys.hasNext()) {
String key = (String) keys.next();
logger.info("HeaderKey->" + key);
logger.info("Header values->" + headers.get(key));
// getting Basic Authentication
String tmpusername = getUsernameFromAuthentication(key,
headers.get(key).toString());
SOAPMessageContext ctx=(SOAPMessageContext)wsCtx
.getMessageContext();
java.util.Map头=(Map)ctx
.get(MessageContext.HTTP\u请求\u头);
if(headers.keySet()!=null&&!headers.keySet().isEmpty()){
迭代器键=headers.keySet().Iterator();
while(keys.hasNext()){
字符串键=(字符串)键。下一步();
logger.info(“HeaderKey->”+键);
logger.info(“标题值->”+headers.get(键));
//获取基本身份验证
字符串tmpusername=getUsernameFromAuthentication(密钥,
headers.get(key.toString());
代码在我看来还行,应该可以正常工作
无论如何,请尝试通过以下方式访问请求标头:
Headers headers = ex.getRequestHeaders();
List<String> ulist = headers.get(BindingProvider.USERNAME_PROPERTY);
List<String> plist = headers.get(BindingProvider.PASSWORD_PROPERTY);
Headers=ex.getRequestHeaders();
List ulist=headers.get(BindingProvider.USERNAME\u属性);
List plist=headers.get(BindingProvider.PASSWORD\u属性);
PS:记住USERNAME_属性是来自BindingProvider接口的静态字符串,可以以静态方式访问。(编码标准:)