How do I consume a web service protected with HTTP basic authentication using the CXF framework?

后端 未结 3 1985
渐次进展
渐次进展 2020-12-17 14:48

I tried to get it to work using the CXF User Guide, but I\'ve had no luck.

I\'m trying to call the web service using java code.

相关标签:
3条回答
  • 2020-12-17 14:49

    You can provide your own Authenticator. That way it will work if the WDSL itself is protected by basic HTTP authentication.

    @WebServiceRef(wsdlLocation = "https://laka/sito?wsdl")
    static XxxService service;
    
    public static void main(String[] args) {
    
        Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("user", "password".toCharArray());
            }
        });
    
        service = new XxxService();
        Xxx port = service.getXxxPort();
    
        // invoke webservice and print response
        XxxResponse resp = port.foo();
        System.out.println(resp.toString());
    
    }
    
    0 讨论(0)
  • 2020-12-17 15:04

    There is a much better way:

    when generating Java from WSDL, add option "-exsh true" :

    wsdl2java -exsh true -p edu.sharif.ce http://wsdl.ir/WebServices/WebService.asmx?WSDL

    and add UserCredential when using:

    UserCredentials user = new UserCredentials();
    user.setUserid("user");
    user.setPassword("pass");
    
    ResearchWebService_Service service = new ResearchWebService_Service();
    ResearchWebService port = service.getResearchWebService();
    port.addNewProject(newProject, user);
    
    0 讨论(0)
  • 2020-12-17 15:14

    This is covered by the JAX-WS Specification. Basically, set the username/password as properties on the request context:

    ((BindingProvider)proxy).getRequestContext().put(
        BindingProvider.USERNAME_PROPERTY, "joe");
    ((BindingProvider)proxy).getRequestContext().put(
        BindingProvider.PASSWORD_PROPERTY, "pswd");
    

    The runtime puts them into the HTTP header.

    0 讨论(0)
提交回复
热议问题