IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Web service J2ME avec ksaop


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 10
    Par défaut Web service J2ME avec ksaop
    Bonjour,

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

    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:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <!--
    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:




    /
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    *
    * 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:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Par défaut
    Bonjour,
    remplace "localhost" par l'adresse IP de la machine où se trouve ton web service.
    Si ton web service se trouve dans la machine que tu utilise pour faire ton J2ME, alors ton emulateur considére "localhost" comme l'émulateur lui même.
    Alors il faut remplacer dans tous les cas "localhost " par l'adresse IP de ta machine.
    Merci et bonne chance

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/03/2010, 09h37
  2. [Web Service] Création avec WebSphere
    Par tatemilio2 dans le forum Services Web
    Réponses: 1
    Dernier message: 26/07/2006, 10h12
  3. [Web Services] Appel de Web Service (pb avec authentification)
    Par cicolas dans le forum Spring
    Réponses: 4
    Dernier message: 04/07/2006, 10h20
  4. [WEB SERVICE]probleme avec jaxrpc
    Par olive2bx dans le forum Services Web
    Réponses: 1
    Dernier message: 30/06/2006, 09h39
  5. [Web Service] example avec base Oracle 10g
    Par osmoze dans le forum Services Web
    Réponses: 3
    Dernier message: 19/04/2006, 19h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo