Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Envoye de structures en soap

Envoyé par : Utilisateur anonyme

Date : 15/09/2005 07:52

Bonjour, j'essaye actuellement d'effectuer des requetes soap et plus particulièrement d'envoyer des structures de données au serveur soap.

Par exemple je voudrais envoyer un tel contenu:

<user-identification>
<login>LOGIN</login>
<password>PASSWORD</password>
</user-identification>

j'ai essayé sans succès de combiner 2 tableaux de SOAPParameter comme ceci :

var array = new Array(new SOAPParameter("LOGIN","login"),new SOAPParameter("PASSWORD","password")); 
var identification = new Array(new SOAPParameter(array, "user-identification")); 

Ceci me donne le message d'erreur :

"SOAP_PROPERTYBAG_REQUIRED: When encoding as a struct, an object with properties is required"

Je ne trouve nul part où est expliqué ce mechanisme, quelqu'un aurait il la solution à mon problème ?

Merci :)

# Re: Envoye de structures en soap

Envoyé par : LupusMichaelis

Date : 17/09/2005 23:06

Tu peux séparer les diverses opérations effecuées et nous dire sur quelle ligne la console Javascript couine ?

# Re: Envoye de structures en soap

Envoyé par : Utilisateur anonyme

Date : 19/09/2005 08:00

Déjà voici un extrait du code utilisé :

var soapMethod = "authenticate";
var soapHeaders = new Array();
var array = new Array(new SOAPParameter("LOGIN","login"),new SOAPParameter("PASSWD","password")); 
var identification = new Array(new SOAPParameter(array, 'identification')); 
var soapCall = new SOAPCall();
               
soapCall.transportURI = "https://localhost:4433/elidune"; 
soapCall.actionURI = soapMethod;

soapCall.encode(0, soapMethod,"urn:elidune", soapHeaders.length, soapHeaders, identification.length, identification);
	
soapCall.asyncInvoke(
		 function (response, soapcall, error)
		{
    				var r = handleSOAPResponse(response,soapcall,error);
       			callback(r);
     			}
 		);

Pour chaque opération aucune erreur n'est remontée dans la console javascript, il y a uniquement le message "SOAP_PROPERTYBAG_REQUIRED: When encoding as a struct, an object with properties is required" qui est affiché dans une fenetre alert lors de l'appel à "soapCall.encode"

# Re: Envoye de structures en soap

Envoyé par : MiKe

Date : 19/09/2005 15:30

var array = new Array(new SOAPParameter("LOGIN","login"),new SOAPParameter("PASSWD","password")); 
var identification = new Array(new SOAPParameter(array, 'identification')); 

Tu ne peux pas faire ça en soap! Il faut que tu passe par 2 parametres: 1 Login et 1 Password.

var identification = new Array(new SOAPParameter("LOGIN","login"),new SOAPParameter("PASSWD","password")); 
...
soapCall.encode(0, soapMethod,"urn:elidune", soapHeaders.length, soapHeaders, identification.length, identification);

La ça devrait marcher.

Par contre si quelqu'un s'y connait un peu mieux que moi en soap j'ai une erreur que j'arrive pas à résoudre

NS_ERROR_CANNOT_CONVERT_DATA: Component returned failure code:
0x80460001 (NS_ERROR_CANNOT_CONVERT_DATA) [nsISOAPMessage.encode] IN undefined @line 45

Enfin je vais peut-etre créer un autre topic soap...

# Re: Envoye de structures en soap

Envoyé par : Utilisateur anonyme

Date : 21/09/2005 08:02

Le problème est que

var identification = new Array(new SOAPParameter("LOGIN","login"),new SOAPParameter("PASSWD","password")); 

ne crée pas de structure, et envoie uniquement les 2 paramètres :-/

Merci, je continue à chercher... :)

# Re: Envoye de structures en soap [solution]

Envoyé par : Utilisateur anonyme

Date : 11/10/2005 13:52

Bon j'ai trouvé comment faire, alors ça peut peut-être interesser des gens.

en gros :

var o=new Object();
o.login="mon_login";
o.password="mon_password";


var enc = new SOAPEncoding();
enc.schemaCollection.load( "http://hostname/fichier.xsd" );
var atype = enc.schemaCollection.getType( "userIdentification", "urn:ns" );


var sp=new SOAPParameter(o, "authenticateInput");
sp.encoding = enc;
sp.schemaType = atype;

var params  = new Array();	
params.push( sp );

voilà, et il ne reste plus qu'à envoyer 'params' avec le soapCall ...

# Re: Envoye de structures en soap

Envoyé par : Utilisateur anonyme

Date : 30/01/2006 18:45

Jean,

I'm sorry, I don't know French very well. I'm hoping that you know English. It looks like what you are doing here would be very usesful to me? Is it possible that you could post the contents of the file fichier.xsd?

Merci

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.