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

4D Discussion :

Interfacer service Web 4D avec Flash Builder 4


Sujet :

4D

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 41
    Points
    41
    Par défaut Interfacer service Web 4D avec Flash Builder 4
    Bonjour,

    Je souhaite établir une communication entre Flash Builder 4 (Je développe en Flex:AS3) et 4D via un service Web.

    N'étant pas grand connaisseur dans ces nouveaux langages, j'ai décidé de reprendre l'exemple du service Web suivant trouvé ici afin de partir sur une base 4D qui n'est pas erronée
    (En passant, je ne sais pas encore comment débugger un service 4D )


    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
    C_ENTIER LONG($1;$int)
    C_TEXTE($0;$status)
     
    DECLARATION SOAP($1;Est un entier long ;SOAP entrée ;"id")
    DECLARATION SOAP($0;Est un texte ;SOAP sortie ;"result")
     
    $int:=$1
     
    Si ($int1)
     
    	ENVOYER ERREUR SOAP(SOAP erreur client ;"nombre trop important")
    	$status:="Failed"
     
    Sinon 
     
    	$status:="OK"
     
    Fin de si 
     
    $0:=$status

    Du côté Flex, une classe est automatiquement générée en utilisant l'assistant de l'environnement de développement et en lui fournissant:
    - L'URL WSDL
    - Le nom du service Web

    Lorsque je souhaite tester le service via l'onglet "Opération de test" de Flash Builder, je constate que le service est bien reconnu et qu'il attend un entier en paramètre.
    Je saisis 1 comme entier et après validation je reçois une belle erreur:

    Une erreur s'est produite lors de l'appel de l'opération

    InvocationTargetException :Une erreur s’est produite lors de l’appel de l’opération. Vérifiez les paramètres d’entrée de l’opération et réessayez de l’appeler.


    Réponse reçue :
    SOAP-ENV:Server A problem occurred while calling the remote method.



    Info: du côté 4D, j'ai spécifié dans les propriétés de mon service (nouvelle méthode créée):
    - Offert comme Web Service
    - Publié dans WSDL


    Je suis un peu perdu et je ne trouve pas beaucoup d'informations sur le net, peut-être sauriez vous me conseiller?

    Merci par avance

  2. #2
    Membre confirmé Avatar de ZeFiF
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2008
    Messages
    303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 303
    Points : 486
    Points
    486
    Par défaut
    Bonjour,

    essaye avec :
    c_entier long(id)
    c_texte(result)

    DECLARATION SOAP(id;Est un entier long ;SOAP entrée)
    DECLARATION SOAP(result;Est un texte ;SOAP sortie )

    et tiens nous au courant...
    :-)
    Philippe

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 41
    Points
    41
    Par défaut
    J'ai modifié la méthode 4D, elle est maintenant réduite au strict minium


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C_ENTIER LONG(id)
    C_TEXTE(result)
     
    DECLARATION SOAP(id;Est un entier long ;SOAP entrée )
    DECLARATION SOAP(result;Est un texte ;SOAP sortie )
     
     
    result:="ok"
    L'erreur retournée est identique...
    Y a t-il un fichier de log 4D qui permettrait d'en savoir plus?

  4. #4
    Membre confirmé Avatar de ZeFiF
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2008
    Messages
    303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 303
    Points : 486
    Points
    486
    Par défaut
    re,

    il ya bien un fichier log.txt mais je ne suis pas sur qu'il contienne les web services, à vérifier...

    as tu essayé de tout passer en texte plutôt qu'en entier ?

    hth
    Philippe

  5. #5
    Membre confirmé Avatar de ZeFiF
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2008
    Messages
    303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 303
    Points : 486
    Points
    486
    Par défaut
    sinon tu peux regarder avec un client soap
    pour voir ce que 4D te réponds,
    sur Mac j'utilise http://ditchnet.org/soapclient/

    et tant que tu y es, faudrait peut être clore ce thread :
    http://www.developpez.net/forums/d10...x/#post5618410

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 41
    Points
    41
    Par défaut
    Merci pour le lien. Le service est bien détecté donc le problème se trouve probablement à un autre niveau.
    Je me permets de poster un nouveau lien pour les utilisateurs de Snow Leopard (10.6) : http://code.google.com/p/mac-soapcli...nt-1.6.4b8.zip

    Je vais creuser davantage le sujet...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 41
    Points
    41
    Par défaut
    Me revoilà,

    Changement de contexte, toujours dans les web services, j'ai été amené à travailler en localhost vu que j'arrêtais pas de faire planter 4D server et donc empêcher mes collègues de travailler

    J'ai donc créé une base 4D "serveur" sur ma machine qui contient 1 méthode, offerte comme WebService, disponible dans WSDL, nommée WS_rq_transfert_rayon:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    C_TEXTE($1)
     
    DECLARATION SOAP($1;Est un texte ;SOAP entrée ;"lst_id")
     
    DECLARATION SOAP($0;Est un texte ;SOAP sortie ;"result")
     
     
    TRACE
     
    $0:=$1


    J'ai créé une seconde base sur ma machine, 4D "client", qui contient 2 méthodes:

    - Une première, générée par l'assistant de connexion WebServices:

    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
     
    ` 
    ` proxy_WS_rq_transfert_rayon
    ` http://127.0.0.1:8080/4dwsdl/
    ` 
    ` Méthode générée automatiquement par l'assistant Web Services de 4D.
    ` ----------------------------------------------------------------
     
    C_TEXTE($1)
    C_TEXTE($0)
     
    FIXER PARAMETRE WEB SERVICE("lst_id";$1)
     
     
     
    APPELER WEB SERVICE("http://127.0.0.1:8080/4DSOAP/";"A_WebService#WS_rq_transfert_rayon";"WS_rq_transfert_rayon";"http://www.4d.com/namespace/default";Web Service dynamique )
     
     
    Si (OK=1)
    	LIRE RESULTAT WEB SERVICE($0;"result";*) ` Libération de la mémoire après retour de la valeur.
    Fin de si

    - Et une méthode test qui appelle cette dernière en lui passant des données:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    C_TEXTE(v_txt)
     
    v_txt:="Hello from 4D"
    $resu:=proxy_WS_rq_transfert_rayon (v_txt)
     
    ALERTE($resu)

    C'est super, cet exemple ne sert pas à grand chose mais il me renvoie cependant la chaine passée dans v_txt

    Je vais essayer maintenant de passer un tableau en paramètre, c'est la seconde étape et quand ça sera ok, je reviendrai à Flash Builder.

Discussions similaires

  1. Création de services web php avec Flash builder
    Par errog dans le forum EDI/Outils
    Réponses: 8
    Dernier message: 06/01/2011, 14h12
  2. [Flex4] Service XML avec Flash Builder 4
    Par BoyzInDaProject dans le forum EDI/Outils
    Réponses: 0
    Dernier message: 27/07/2010, 16h37
  3. Vidéo Tutorial Service Web C# avec Telnet
    Par irnbru dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 14/06/2007, 11h06
  4. Réponses: 1
    Dernier message: 27/04/2007, 18h29
  5. Web CAM avec FLASH
    Par mat2006 dans le forum Flash
    Réponses: 1
    Dernier message: 11/06/2006, 23h41

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