soap-ui generierten code

Ich habe einen webservice, den ich versuche zu bauen, ein client für.

Habe ich die folgende wsdl:

http://www.cmicdataservices.com/datacenter/service.asmx?wsdl

Es erfordert Authentifizierung. Blick auf die WSDL-Beschreibung sehe ich keine Methode, die eine Authentifizierung Objekt, noch Benutzername und Passwort als Argumente. Mit Netbeans habe ich generiert jax-ws Quellen für die WSDL. Ich kann jedoch nicht herausfinden, was zu tun ist, nach, dass.

Mit soapui kann ich die Verbindung zum webservice und führen alle Methoden. Aber noch einmal, ich möchte diesen in einem client ausgeführt werden können, ohne meine Interaktion.

Mein problem kommt in herauszufinden, wie man diese generiert code, der es erscheint netbeans.tv hatte ein video(netbeans soapui-plugin, video 2), das seitdem verloren. Kennt jemand irgendwelche tutorials oder kennen Beispiele dafür, wie kann ich dieses generierter code zum Zugriff auf die webservice?

also ich habe eine Methode CheckifAuthorized()

Läuft in soapui bekomme ich die folgende xml -

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:cmic="http://www.cmicdataservices.com/">
   <soap:Header>
      <cmic:Authentication>
         <!--Optional:-->
         <cmic:UserName>username</cmic:UserName>
         <!--Optional:-->
         <cmic:Password>password</cmic:Password>
      </cmic:Authentication>
   </soap:Header>
   <soap:Body>
      <cmic:CheckIfAuthorized/>
   </soap:Body>
</soap:Envelope>

Kann ich dann ausführen, dass die Anfrage in soap-ui und wieder die Antwort, dass die Authentifizierung erfolgreich war.

Mit der jax-ws generierten code mit netbeans und mit soapui als auch ich haben das folgende:

package javaapplication7;

/**
 *
 * @author grant
 */
public class Main {

    public static void main(String[] args) {

        Boolean result = checkIfAuthorized();
        System.out.println("The result is: " + result);
    }

    private static boolean checkIfAuthorized() {
        javaapplication7.CMICDatacenterService service = new javaapplication7.CMICDatacenterService();
        javaapplication7.CMICDatacenterServiceSoap port = service.getCMICDatacenterServiceSoap();
        return port.checkIfAuthorized();
    }
}

Dies wird mit dem folgenden Fehler fehl

run:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Server was unable to process request. ---> Object reference not set to an instance of an object.
        at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)
        at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
        at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
        at $Proxy30.checkIfAuthorized(Unknown Source)
        at javaapplication7.Main.checkIfAuthorized(Main.java:24)
        at javaapplication7.Main.main(Main.java:17)
Java Result: 1

Dies ist das gleiche problem ich lief in, wenn Sie versuchen, die Verwendung von python für den service. Seitdem habe ich erwählt, mit Java, da ich das Gefühl ich kann schneller turnaround auf das Parsen von xml und Objekte zu erstellen, wie ich bereits die Elemente für diese erstellt.

Danke.

Gewähren

Wollte ich nicht zu beantworten, denn ich würde noch gerne herausfinden, was ich hier tun kann, aber ich habe nur am Ende schreiben die Anforderung von hand mit der folgenden. Ich kann jetzt nur konvertieren Sie diese in ein xml-Objekt und gehen über meinen Weg, aber ich kann mir vorstellen soapui macht dies viel einfacher. Was ich wirklich nicht verstehe ist, wie soapui zum erstellen dieser Anfrage und integrieren es in meinem Projekt:

public class Main {

    public final static String DEFAULT_SERVER =
            "http://www.cmicdataservices.com/datacenter/service.asmx";
    public final static String SOAP_ACTION =
            "http://www.cmicdataservices.com/CheckIfAuthorized";

     public static void main(String[] args) {
         String server = DEFAULT_SERVER;
         String UserName = "Username";
         String Password="Password";


     try{
             URL url = new URL(server);
             HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
            connection.setRequestProperty("Host", "www.cmicdataservices.com");
            OutputStream out = connection.getOutputStream();
            Writer wout = new OutputStreamWriter(out);
            //Uncomment the following and comment out the previous two lines to see your xml
            //BufferedWriter wout = new BufferedWriter(new FileWriter("/tmp/testXML.xml"));

            //Start writing soap request - Envelope
            wout.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");
            wout.write("<soap12:Envelope ");
            wout.write("xmlns:xsi=");
            wout.write("'http://www.w3.org/2001/XMLSchema-instance' ");
            wout.write("xmlns:xsd=");
            wout.write("'http://www.w3.org/2001/XMLSchema' ");
            wout.write("xmlns:soap12=");
            wout.write("'http://www.w3.org/2003/05/soap-envelope'>\r\n");

            //Soap request header start
            wout.write("<soap12:Header>\r\n");

            //Start writing soap request - Authentication
            wout.write("<Authentication xmlns=");
            wout.write("'http://www.cmicdataservices.com/'>\r\n");
            wout.write("<UserName>" + UserName + "</UserName>\r\n");
            wout.write("<Password>" + Password + "</Password>\r\n");
            //End Authentication
            wout.write("</Authentication>\r\n");

            //End the header
            wout.write("</soap12:Header>\r\n");

            //Start writing the body
            wout.write("<soap12:Body>");
            wout.write("<GetCurrentDataVer1 xmlns=");
            wout.write("'http://www.cmicdataservices.com/' />\r\n");
            //End the Body
            wout.write("</soap12:Body>\r\n");

            //End the Envelope
            wout.write("</soap12:Envelope>\r\n");

            wout.flush();
            wout.close();


            //BufferedWriter fout = new BufferedWriter(new FileWriter("/tmp/testXMLResponse.xml"));
            InputStream in = connection.getInputStream();
            createFile(in, "/tmp/testXMLResponse.xml");
     }
     catch (IOException e) {
         System.err.println(e);
     }
     }

     public static void createFile(InputStream io, String fileName) throws IOException {
         FileOutputStream fout = new FileOutputStream(fileName);
         byte[] buf = new byte[256];
         int read = 0;
         while ((read = io.read(buf)) != -1){
             fout.write(buf, 0, read);
         }
     }
InformationsquelleAutor grantk | 2011-04-04
Schreibe einen Kommentar