具有基本授权的JAX-WS请求

java web-services soap jax-ws

11 观看

1回复

848 作者的声誉

我试图使用具有基本授权的处理程序调用SOAP Web服务,但不知何故API正在响应401未经授权。

@Override
public boolean handleMessage(SOAPMessageContext context) {
    Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
    if(outboundProperty.booleanValue()){
        try{
            String authString = parameter.getUser() + ":" + parameter.getPassword();
            SOAPMessage soapMessage =context.getMessage();
            soapMessage.getMimeHeaders().addHeader("Authorization","Basic " + new  String(Base64.encode(authString.getBytes())));   
            soapMessage.saveChanges(); 
        }catch(Exception e){
            log4j.error(e.getMessage(), e);
        }
    }
    return outboundProperty;
}

使用SOAPUI Endpoint是可以访问的,我得到了响应,但是代码说它是未经授权的。

任何指针都会非常有用。谢谢

作者: lesnar 的来源 发布者: 2018 年 12 月 7 日

回应 1


0

1984 作者的声誉

您需要将代码更改为:

@Override
public boolean handleMessage(SOAPMessageContext context) {
    Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
    if(outboundProperty.booleanValue()){
        try{
            String authString = parameter.getUser() + ":" + parameter.getPassword();
            SOAPMessage soapMessage =context.getMessage();
            soapMessage.getMimeHeaders().addHeader("Authorization","Basic " + Base64.encode(loginPassword.getBytes()).toString());   
            soapMessage.saveChanges(); 
        }catch(Exception e){
            log4j.error(e.getMessage(), e);
        }
    }
    return outboundProperty;
}
作者: Spara 发布者: 2018 年 12 月 7 日
32x32