Web services 无法传递用户名&;jaxws中的密码

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

我试图使用下面的客户端使用username/pwd调用一个webservice,但是我没有看到在标题中设置了username/password

客户端代码

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接口的静态字符串,可以以静态方式访问。(编码标准:)