Partage
  • Partager sur Facebook
  • Partager sur Twitter

Web service et J2ME

    13 juin 2010 à 13:00:49

    Bonjour,

    j'ai voulu utiliser le web service pour authentifier un client mobile (développé en J2ME),

    pour ce la,

    j'ai commencé par créer le web service, pour le moment, et pour simplifier les taches, j'ai crée
    une simple méthode getResponse qui retourne dans tout les cas un String="True".
    Le fichier WSDL généré est le suivant:

    Citation : Fichier WSDL


    <!--
    Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.4-b01-.
    -->

    <!--
    Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.4-b01-.
    -->

    <definitions targetNamespace="http://MyPackage/" name="MyServiceService">

    <types>

    <xsd:schema>
    <xsd:import namespace="http://MyPackage/" schemaLocation="http://localhost:8080/WebApplication2/MyService?xsd=1"/>
    </xsd:schema>
    </types>

    <message name="getResponse">
    <part name="parameters" element="tns:getResponse"/>
    </message>

    <message name="getResponseResponse">
    <part name="parameters" element="tns:getResponseResponse"/>
    </message>

    <portType name="MyService">

    <operation name="getResponse">
    <input message="tns:getResponse"/>
    <output message="tns:getResponseResponse"/>
    </operation>
    </portType>

    <binding name="MyServicePortBinding" type="tns:MyService">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

    <operation name="getResponse">
    <soap:operation soapAction=""/>

    <input>
    <soap:body use="literal"/>
    </input>

    <output>
    <soap:body use="literal"/>
    </output>
    </operation>
    </binding>

    <service name="MyServiceService">

    <port name="MyServicePort" binding="tns:MyServicePortBinding">
    <soap:address location="http://localhost:8080/WebApplication2/MyService"/>
    </port>
    </service>
    </definitions>



    Les caractéristique de ce service sont:




    Endpoint
    Service Name: {http://MyPackage/}MyServiceService
    Port Name: {http://MyPackage/}MyServicePort

    Information
    Address: http://localhost:8080/WebApplication2/MyService
    WSDL: http://localhost:8080/WebApplication2/MyService?wsdl
    Implementation class: MyPackage.MyService

    La MIDlet à partir de laquelle je vais appeler le service est la suivante:


    Citation : code java


    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
    import javax.microedition.midlet.*;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransport;


    public class Midlet extends MIDlet implements CommandListener {

    private Form form;
    private Display disp;
    private StringBuffer tamponEcriture;
    private Command ok, exit;
    private Object resultatRequeteSOAP = null;
    private SoapObject objetSOAPHello;
    private HttpTransport connexionServeur;
    private SoapSerializationEnvelope envelope;
    private String urlService = "http://localhost:8080";
    private String nomService = "url:http://localhost:8080/WebApplication2/MyService?wsdl";
    private TextField enter1;
    private TextField enter2;

    public Midlet() {
    // super();
    form = new Form("Welcome Form");
    exit = new Command("Exit", Command.SCREEN, 1);
    ok = new Command("OK", Command.SCREEN, 1);
    enter1 = new TextField("Tapez un Login", "", 20,
    TextField.ANY);
    enter2 = new TextField("Tapez un Mot de passe", "", 20,
    TextField.ANY);
    form.append(enter1);
    form.append(enter2);
    form.addCommand(ok);
    form.addCommand(exit);
    form.setCommandListener(this);
    tamponEcriture = new StringBuffer("");

    }

    public void startApp() {
    disp = Display.getDisplay(this);
    disp.setCurrent(form);

    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable d) {
    if (c == ok) {
    System.out.println("aaaaaaaaaaaaa");
    InvokeService();
    System.out.println("bbbbbbbbbbbbbbb");
    afficherResultat();
    System.out.println("cccccccccccc");
    }
    }

    private void InvokeService() {
    try {

    connexionServeur = new HttpTransport(urlService);
    connexionServeur.debug = true;
    objetSOAPHello = new SoapObject(nomService, "getResponse");
    envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER11);
    envelope.bodyOut = objetSOAPHello;


    } catch (Exception aE) {
    System.out.println("Erreur : " + aE.getMessage());
    aE.printStackTrace();
    return;
    }

    try {
    // invoquation de la méthode sur le serveur
    connexionServeur.call(null, envelope);
    //connexionServeur.call(urlService, envelope);

    // recuperation de la réponse du serveur
    resultatRequeteSOAP = envelope.getResponse();
    this.tamponEcriture.append("\nCon : " + resultatRequeteSOAP);

    } catch (Exception aE) {
    System.out.println("Erreur : " + aE.getMessage());
    aE.printStackTrace();
    }
    }

    public void afficherResultat() {
    System.out.println( tamponEcriture.toString());
    }
    }




    Quand je fait un Run, j'obtient un erreur signalant la ligne:

    Citation : Ligne signalée

    connexionServeur.call(null, envelope);




    Il parait que c'est un problème d'url ,touchant


    private String urlService = "http://localhost:8080";
    private String nomService = "url:http://localhost:8080/WebApplication2/MyService?wsdl";

    L'erreur que j'obtient aprés l'appui de la commande OK pour s'authentifier est:

    Citation : erreur

    aaaaaaaaaaaaa
    Erreur : expected: END_TAG {http://schemas.xmlsoap.org/soap/envelope/}Body (position:END_TAG </{http://schemas.xmlsoap.org/soap/envelope/}S:Fault>@1:277 in java.io.InputStreamReader@e5125d64)
    org.xmlpull.v1.XmlPullParserException: expected: END_TAG {http://schemas.xmlsoap.org/soap/envelope/}Body (position:END_TAG </{http://schemas.xmlsoap.org/soap/envelope/}S:Fault>@1:277 in java.io.InputStreamReader@e5125d64)
    at org.kxml2.io.KXmlParser.exception(), bci=44
    at org.kxml2.io.KXmlParser.require(), bci=80
    at org.ksoap2.SoapEnvelope.parse(), bci=150
    at org.ksoap2.transport.Transport.parseResponse(), bci=27
    at org.ksoap2.transport.HttpTransport.call(), bci=291
    at Midlet.InvokeService(Midlet.java:91)
    at Midlet.commandAction(Midlet.java:64)
    at javax.microedition.lcdui.Display$ChameleonTunnel.callScreenListener(), bci=46
    at com.sun.midp.chameleon.layers.SoftButtonLayer.processCommand(), bci=74
    at com.sun.midp.chameleon.layers.SoftButtonLayer.soft1(), bci=37
    at com.sun.midp.chameleon.layers.SoftButtonLayer.keyInput(), bci=36
    at com.sun.midp.chameleon.CWindow.keyInput(), bci=38
    at javax.microedition.lcdui.Display$DisplayEventConsumerImpl.handleKeyEvent(), bci=17
    at com.sun.midp.lcdui.DisplayEventListener.process(), bci=277
    at com.sun.midp.events.EventQueue.run(), bci=179
    at java.lang.Thread.run(Thread.java:619)
    bbbbbbbbbbbbbbb
    ccccccccccccc





    Quelqu'un a une idée?
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2010 à 11:53:14

      Y'a t'il pas quelqu'un qui a une idée?
      • Partager sur Facebook
      • Partager sur Twitter
        17 juin 2010 à 16:07:13

        Y'a t'il quelqu'un qui a une idée sur les adresses (URL) à mettre?

        J'ai cherché mais j'ai pas trouvé une bonne réponse.
        • Partager sur Facebook
        • Partager sur Twitter
          30 avril 2012 à 21:19:55

          Salut , svp j'ai le même problème si vous avez trouvé la solution de votre problème prière de la partager :(
          Merci .
          • Partager sur Facebook
          • Partager sur Twitter

          Web service et J2ME

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown