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 retourne "exception"


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut Web service retourne "exception"
    Bonjour, voilà mon problème, après avoir galérer un moment j'ai écris un petit client web services mais comme retour j'ai "exception".

    Voici mon code

    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
    try {
    				String endpoint2 = "http://www.webservicex.net/stockquote.asmx";
     
    				Service  service = new Service();
    				Call     call    = (Call) service.createCall();
     
    				call.setTargetEndpointAddress(new URL(endpoint2) );
    				call.setOperationName(new QName("http://www.webservicex.net/stockquote.asmx?wsdl", "GetQuote"));
    				call.setSOAPActionURI("http://www.webserviceX.NET/GetQuote");
     
    				String ret = (String) call.invoke(new Object[] { "edf" });
     
    				System.out.println("Sent 'ibm', Got '" + ret + "'");
     
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    et l'affichage :

    Sent 'ibm', Got 'exception'

    Or je devrait pas du tout avoir ça.
    Merci si vous pouvez m'aider !

  2. #2
    oca
    oca est déconnecté
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 354
    Par défaut
    A mon avis, to QName n'est pas bon...

    je verrais plutôt qqch comme :
    call.setOperationName(new QName("http://www.webserviceX.NET/", "GetQuote"));

    le namespace des operations (ici "http://www.webserviceX.NET/") se trouve dans la definition de la wsdl,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <wsdl:definitions ... targetNamespace="http://www.webserviceX.NET/" ...
    a+

  3. #3
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Par défaut
    La suggestion d'oca me paraissait la bonne, mais en créant le même client, je m'aperçois que cela ne fonctionne pas...

    Sinon, tu peux utiliser ce client (la classe StockQuoteSoapProxy est générée en créant un client service web avec Eclipse ou NetBeans en passant à l'IDE le contrat WSDL du service web) :
    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
    import java.rmi.RemoteException;
     
    import NET.webserviceX.www.StockQuoteSoapProxy;
     
    public class StockQuoteClient {
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		try {
    			StockQuoteSoapProxy proxy = new StockQuoteSoapProxy();
    			String ret = proxy.getQuote("edf");
     
    			System.out.println("Sent 'edf', Got '" + ret + "'");
    		} catch(RemoteException e) {
    			e.printStackTrace();
    		}
    	}
    }
    Néanmoins, le client avec Axis devrait pouvoir fonctionner également...

  4. #4
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Par défaut
    En fait l'erreur provient du paramètre "edf" qui n'est pas transmis au service web lors de son invocation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String ret = (String) call.invoke(new Object[] { "edf" });
    C'est une problématique qui m'intéresse également, alors si quelqu'un a une explication...

    EDIT : Voici un lien (en anglais) qui détaille un peu mieux ce problème, mais malheureusement sans le résoudre : cliquez ici

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut
    Le problème c'est que j'ai écrit ça (en fait je l'ai trouvé mais je ne sais plus où) :

    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
    String endpoint = "http://www.ebob42.com/cgi-bin/Romulan.exe/soap/IRoman";     
    		    if (args.length != 1) {
    		      System.out.println("Usage: ClientRoman argEntier");
    		      return;
    		    }       
    		    Integer entier = new Integer(args[0]);
     
    		    Service  service = new Service();
    		    Call call = (Call) service.createCall();
    		    call.setTargetEndpointAddress( new java.net.URL(endpoint) );
    		    call.setSOAPActionURI("urn:Roman-IRoman#IntToRoman");
    		    call.setOperationName( new QName("urn:Roman-IRoman", "IntToRoman") );
    		    call.addParameter( "Int", XMLType.XSD_INT, ParameterMode.IN );
    		    call.setReturnType( XMLType.XSD_STRING );
     
    		    String result = (String) call.invoke( new Object [] { entier });
     
    		    System.out.println("IntToRoman("+entier+") = "+result);
    Avec une réponse correct : IntToRoman(2) = II

    Donc là l'entier passe bien le "invoke".

  6. #6
    oca
    oca est déconnecté
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 354
    Par défaut
    C'est bizarre cette histoire...
    J'ai essayé ton premier programme avec l'operation GetQuote),
    et j'ai la même erreur que toi, par contre, si j'utilise le "Web service explorer" d'Eclipse pour accéder au service, ça marche bien.

    A noter que ce service utilise un binding document/literal alors que
    le service avec les chiffres romain utilise du rpc/encoded

    Je vais continuer de chercher un peu
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'un web service retournant un objet complexe
    Par yayasam dans le forum Services Web
    Réponses: 5
    Dernier message: 24/03/2011, 11h48
  2. Réponses: 6
    Dernier message: 01/03/2010, 09h53
  3. Réponses: 5
    Dernier message: 03/04/2009, 10h04

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