soap ui code généré

J'ai un webservice je suis en train de créer un client pour.

J'ai wsdl suivantes:

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

Il requiert une authentification. En regardant la description WSDL je ne vois pas de méthode qui prend un objet d'authentification, ni de nom d'utilisateur et les mots de passe des arguments. À l'aide de Netbeans j'ai généré jax-ws sources pour le WSDL. Je ne peut toutefois pas comprendre ce qu'il faut faire par la suite.

À l'aide de soapui je peux me connecter à la webservice et l'exécution de toutes les méthodes. Mais encore une fois, je veux construire ce dans un client qui peut être exécuté sans mon interaction.

Mon problème vient de trouver comment utiliser ce code généré, il semble netbeans.tv avait une vidéo(netbeans soapui plugin vidéo 2), qui a depuis été perdu. Personne ne sait de toute tutoriels ou connaissez des exemples de la façon dont je peux utiliser ce code généré pour accéder au webservice?

j'ai donc une méthode CheckifAuthorized()

Cours d'exécution dans soapui-je obtenir le code xml suivant

<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>

Je pouvez ensuite exécuter la demande dans la fabrication du savon de l'interface utilisateur et obtenir la réponse que l'authentification a été un succès.

Avec jax-ws code généré avec netbeans et avec soapui ainsi j'ai le texte suivant:

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();
    }
}

Cela échouera avec l'erreur suivante

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

C'est le même problème que j'ai rencontré lors de l'utilisation de python pour le service. Depuis, j'ai choisi d'aller avec Java comme je me sens je l'ai peut être une solution plus rapide pour parser le xml et créer des objets que j'ai déjà les entités ainsi créées.

Merci.

Subvention

Je n'ai pas envie de répondre à cela parce que je voudrais quand même comprendre ce que je peux faire ici, mais je viens de finir l'écriture de la requête à la main avec le suivant. Maintenant, je peux juste de le convertir en un objet xml et aller sur mon chemin, mais j'imagine soapui fait tout cela beaucoup plus facile. Ce que je ne comprends pas c'est comment utiliser soapui pour construire cette demande et de l'intégrer dans mon projet:

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);
}
}

OriginalL'auteur grantk | 2011-04-04