Zum Inhalt

Monat: Dezember 2014

Apache CXF Client mit Basic Authentication

Ein einfacher Apache CXF Client mit Basic Authentication lässt sich mit ein paar Zeilen Java Code umsetzen.

Via maven lassen wir uns aus einer WSDL Datei einen Client generieren:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.7.4</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <!-- hier eine valide WSDL Url angeben -->
                        <wsdl>https://www.denniswilmsmann.de/ws/soap/dummyservice?wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Und die dazugehörige Implementierung mit Basic Authentication (leicht gekürzt):

import javax.xml.ws.BindingProvider;

public class Client {

  public static void main(String[] args) {
    MyWebServiceImpl ws = new MyWebServiceImpl();
    MyWebServiceService client = ws.getMyWebServiceImplPort();

    BindingProvider portBP = (BindingProvider) client;
    portBP.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "username");
    portBP.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "password");

    List<Result> results = client.getResult(true, 5.0, 1);

    System.out.println(results.size());
  }

}