Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 13-09-2010 11:57:15

babypower  
Membre
Date d'inscription: 23-07-2010
Messages: 9
Pépites: 55
Banque: 0

[RESOLU] Appel de webservice .Net engine

Bonjour

N'ayant trouvé aucune solution à mon problème PWB (voir mon dernier post) je me suis tourné vers l'utilisation de webservice via .net engine.
j'arrive sans problème à créer une datawindow basée sur mon webservice (une fonction de conversion de int en string.... sur weblogic). PWB crée la DLL Et recopie les DLL .net nécessaires à son fonctionnement dans le rep où se trouve ma PBL de test.

par contre je n'arrive pas à l'appeler via un proxy créé avec l'assistant de création de proxy (.net engine)
j'ai systématiquement l'erreur suivante : "Bad function runtime at line ....". lors de l'invocation de la méthode du web service.

a priori PWB ne semblerait pas trouver DLL (car si je l'enleve complètement du répertoire où elle se trouve cela ne change rien. Mais Il la trouve avec la datawindow....
je me suis dit que cela pouvait venir de mon appel qui est codé de la manière suivante :

     WSproxy Ws
     Ws = create WSProxy       (WSProxy c'est l'objet créé par PWB après deploiement du web service )
     int i = 5
     string s

     s = Ws.intToString(i)   // appel de la méthode de conversion .

je n'ai trouvé nul part un exemple de comment appeler un WE Service via .net .

l'appel est-il bon? Si oui pouvez-vous me donner des pistes sur l'origine de l'erreur (ou un exemple) car je ne vois pas ce qui peut clocher.

merci d'avance.

Dernière modification par babypower (14-09-2010 13:56:27)

Hors ligne

 

#2 13-09-2010 14:50:29

elfeliz  
Bienfaiteur du site
Award: bf
Lieu: Liège, BE
Date d'inscription: 23-06-2009
Messages: 94
Pépites: 471
Banque: 0

Re: [RESOLU] Appel de webservice .Net engine

Salut !

A tout hasard...
* tu as bien importé les pbx nécessaires ? (ce qui te ramène les objets soapconnection etc... )
* l'instanciation de ton proxy me parait peut-être étrange : je ne travaille pas avec .net engine, il ya donc peut-être certaines différences..
mais il me semble plus familier d'instancier ainsi :

Code:

WSproxy Ws
soapconnection conn
long checkreturn

      conn = create soapconnection
     checkreturn = conn.createInstance(  Ws, "WSproxy", "chemin du fichier .asmx")

    ...

et après tu appelles les fonctions de ton proxy... avec une vérif plus fine en utilisant checkreturn, par ex.

Tu verras plus de détails via cet exemple simple...  : http://www.sybase.be/detail?id=1051307

Tiens -nous au courant ;-)

Bybye

El Feliz.


No prob, just Pb !

Hors ligne

 

#3 14-09-2010 13:09:54

babypower  
Membre
Date d'inscription: 23-07-2010
Messages: 9
Pépites: 55
Banque: 0

Re: [RESOLU] Appel de webservice .Net engine

bonjour elfeliz

j'avais bien fait comme indiqué dans ton message mais j'obtiens systématiquement le message d'erreur suivant :

"THE SoapClient doesn't support .NET proxy" ???.
j'en avais déduit (peut être à tort) qu'il ne fallait pas utiliser de soapconnection .
j'ai pensé que c'était réservé à easysoap.

le message survient à l'appel de l'unique fonction de mon WebService

le webservice que j'ai créé sous Weblogic est une simple conversion d'entier en String. donc basique.
je n'ai pas de fichier se terminant par asmx ??! j'ai mis l'url du WebService dans le endpoint.

j'ai dans mon répertoire les fichiers suivants :
- Sybase.Powerbuilder.WebService.Runtime.dll
- Sybase.Powerbuilder.WebService.RuntimeRemoteLoader.dll
- Sybase.Powerbuilder.WebService.WSDL.dll
- Sybase.Powerbuilder.WebService.WSDLRemoteLoader.dll
(c'est les 4 DLL mentionné dans la Doc PWB)
- wstest.dll (mon proxy)


ci joint le code que j'ai utilisé selon tes conseils :


      SoapConnection cnn

      wstest wss   // proxy généré par .NET C'est le nom de l'assembly qui se trouve dans mon répertoire.
      long rval


      cnn = create SoapConnection

      rval = cnn.createInstance(wss,"wstest","http://<nommachine>:7001/WSTest/WSTestService") // EndPoint WebLogic


      try
    sle_4.text = wss.inttostringoperation(long(sle_3.text))
      catch (SoapException e)
    messagebox("error",e.text)
      end try

      destroy cnn

en regardant en débug, l'objet wss que j'utilise est initialisé de la même manière que avec un simple CREATE

une dernière chose : Le WebService a été généré en jax-ws 2.1

vois-tu le problème dans le code ?

Dernière modification par babypower (14-09-2010 13:15:07)

Hors ligne

 

#4 14-09-2010 13:35:03

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: [RESOLU] Appel de webservice .Net engine

Salut,
    Quel est le nom du PBX que tu as importé ?

EasySoap
    pbsoapclientXXX.pbd/pbx

.Net Engine
    pbwsclientXXX.pbd/pbx

Hors ligne

 

#5 14-09-2010 13:39:19

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Appel de webservice .Net engine

Bonjour,



Merci d'avance. Cela facilite la lecture.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#6 14-09-2010 13:43:29

elfeliz  
Bienfaiteur du site
Award: bf
Lieu: Liège, BE
Date d'inscription: 23-06-2009
Messages: 94
Pépites: 471
Banque: 0

Re: [RESOLU] Appel de webservice .Net engine

Salut,

Quelle est la valeur de rval ?
Ton fichier WSDL est-il accessible via Internet Explorer avec le chemin marqué en propriété dans le proxy (en l'occurence :http://<nommachine>:7001/WSTest/WSTestService) ? Il est parfois nécessaire de recopier le fichier en local...

Par ailleurs, comme dit, je n'utilise pas .net, mais à ma connaissance il te faut le sdk et le framework .net installé sur la machine cliente.
Les pbx importées sont aussi différentes en fct de ce que tu utilises ( celles pour .net comprennent des appels au frame, justement, je crois...)

A plus,

El Feliz


No prob, just Pb !

Hors ligne

 

#7 14-09-2010 13:55:30

babypower  
Membre
Date d'inscription: 23-07-2010
Messages: 9
Pépites: 55
Banque: 0

Re: [RESOLU] Appel de webservice .Net engine

Yannis a trouvé l'origine de mon Problème :

en fait j'avais les deux pbx dans ma library list car j'utilise les deux types de WebService (Soap et .net).
mais j'avais en 1er la pbl soap ==> priorité sur la pbl .net.

en inversant l'ordre tout roule.

par contre impossible du coup d'appeler des webservice Soap ?!!

il va falloir qu'on choisisse à moins que l'on puisse faire autrement .

merci encore pour votre aide .

Hors ligne

 

#8 14-09-2010 14:07:37

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: [RESOLU] Appel de webservice .Net engine

La seule méthode est de modifier dynamiquement ta library list au moment ou tu en as besoin.

Pour celà tu as la fonction suivante :

Code: pb

SetLibraryList( "lib1.pbd, lib2.pbd, lib5.pbd")

Hors ligne

 

#9 14-09-2010 14:44:42

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Appel de webservice .Net engine

 


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22