Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# XUL et Soap

Envoyé par : ippous

Date : 23/03/2005 14:34

Bonjour.

J'ai un soucis avec SOAP.

J'ai écris un Service Web en PHP, et je l'appel via un appel SOAP dans une appli XUL.

L'appel se passe bien (les logs de mon SW m'indiquent que tout c'est correctement passé), par contre Firefox et Mozilla déclarent ne rien recevoir en réponse du;

 var r= SOAP.invoke() (r ressort null).

J'ai donc deux questions:

  • doit on signer une appli qui fait des appels soap ?
  • quelqu'un airait'il déjà eu le problème ?

PS: j'ai essayé avec HTTPRequest, XMLRequest, et là pas de pbs.

Par avance merci.

# Re: XUL et Soap

Envoyé par : Lapinator

Date : 24/03/2005 15:32

hummm, j'utilise aussi SOAP, mais je n'arrive qu'a le faire marcher dans le chrome.

Si sa peut aider, je peut te donner aussi du code qui marche ^^

# Re: XUL et Soap

Envoyé par : ippous

Date : 25/03/2005 08:25

Bonjour.

Pourquoi pas. Personellement, je ne suis pas certain qu'il faille signer le script car les messages d'erreurs ("SOAP fault", fonctionnent). En fait je n'arrive pas à avoir le contenu de la réponse du SW.

Il faut que j'adapte le code pour pourvoir le fournir, car il est destiné à lister des mots de passe...

Si vous voullez envoyer du code vous pouvez le faire à: ejaum@at@btb.fr.

Je continu à chercher.

Encore merci.

# Re: XUL et Soap

Envoyé par : Lapinator

Date : 12/04/2005 12:00

Oupppps j'ai mis du temps à répondre DSL :(

voici le code :

const transportURI = "http://xxx:80/serverSOAP.php";
const soapVersion  = 0; // Version 1.1


function mailling_get_groupes() {
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { alert(e);	return false;	}
if(window.session) var session=window.session; else var session=opener.session;
 
var headers = new Array( );
var params  = new Array(
	new SOAPParameter(session,"session")
);
var call = new SOAPCall( );
call.transportURI = transportURI;
call.actionURI = "urn:testprovider#printit";
call.encode(soapVersion, "getGroupesEmails", "urn:testprovider", 0, null, params.length, params);
var currentRequest = call.asyncInvoke(mailling_get_groupes_responce);
}

function  mailling_get_groupes_responce(resp,call,status) {
// SOAP_response_test : fonction perso
if(!SOAP_response_test(resp,call,status)) return;

groupe=document.getElementById('mail-groupe');

//Suppression des anciens elements
while(groupe.childNodes[1].childNodes[4]) groupe.childNodes[1].removeChild(groupe.childNodes[1].childNodes[4]);

g='';
for(i=0; d = resp.body.firstChild.firstChild.childNodes[i]; i++){
	gr         = d.childNodes[0].firstChild.data;
	sousgroupe = d.childNodes[1].firstChild.data;
	email      = d.childNodes[2].firstChild.data;
	
	if(gr!=g){
		if(g!='') groupe.childNodes[1].appendChild(treeitem_base);

		treeitem_base = document.createElement("treeitem");
		treeitem_base.setAttribute("container","true");
		treeitem_base.setAttribute("open","true");

		treerow  = document.createElement("treerow");
		treecell = document.createElement("treecell");
		treecell.setAttribute("label",gr);
		treerow.appendChild(treecell);

		treeitem_base.appendChild(treerow);

		treechildren = document.createElement("treechildren");
		treeitem_base.appendChild(treechildren);
		g = gr;
	}
	
	treeitem = document.createElement("treeitem");
	treerow  = document.createElement("treerow");
	treecell = document.createElement("treecell");
	treecell.setAttribute("label",sousgroupe);
	treecell.setAttribute("id",email);
	treecell.setAttribute('groupe',gr);
	treerow.appendChild(treecell);
	treeitem.appendChild(treerow);
	treechildren.appendChild(treeitem);		
}

if(treeitem_base) groupe.childNodes[1].appendChild(treeitem_base);
/*	
msg=open('','toto','width=1000,height=500');
// la fonction show_dom a déjà été posté dans un de mes post précédans.
msg.document.writeln(show_dom(groupe));
msg.document.close();
*/

}

Ok c un peut touffu, mais il y a plein d'id a prendre dedans, ici il y a un code pour une demande asyncrone. Pour une demande syncrone utilse la fonction suivante : "resp = call.invoke();".

# Re: XUL et Soap

Envoyé par : ippous

Date : 12/04/2005 13:47

Bonjour Cela ressemble beaucoup à ce que j'ai écris. Je vais néanmoins comparer et voir ce que cela donne.

Merci d'avoir répondu.

# Re: XUL et Soap

Envoyé par : ippous

Date : 13/04/2005 07:33

Bonjour. Mon problème viendrai donc du fait que je ne parvienne pas à obtenir les droits: UniversalBrowserRead.

(PS: pourtant j'ai signé l'ensemble de mon répertoire).

function FListerComptes(){
var method  = "ListerComptes";
var transportURI =  "http://ippous.dyndns.org/passxul/compte.php3";
const object       = "urn:EjaumTest";
var soapVersion=0;
try {
   netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
 } catch (e) {
   alert(e);
  return false;
 }
 if (Identifier()){
    MyUser = document.getElementById("MyUser").value;
    MyPassword = document.getElementById("MyPassword").value;
    clearTopicList(document.getElementById("ListeComptes"));
    var headers = new Array( );
    var params = new Array();
    params[0]  = getParam(MyUser,"User","uri:EjaumTest");
    params[1]  = getParam(MyPassword,"Password","uri:EjaumTest");
    var call = new SOAPCall( );
    call.transportURI = transportURI;
    call.actionURI = object+"/"+method;
    call.encode(soapVersion,method,object,headers.length,headers,params.length,params);
    MyAlert (call.actionURI);
    var currentRequest = call.asyncInvoke(
        function (response, soapcall, error){
             MyAlert(soapcall);
             MyAlert ("Erreur " + currentRequest.fault);
             MyAlert ("Message" + currentRequest.message);
             MyAlert ("Message" + currentRequest.enveloppe);
             MyAlert("Réponse" + response);
             var r = HandleSoapResponse(response, soapcall, error);
             TraiterListeComptes(r);
        }
    );
 }
}

# Re: XUL et Soap

Envoyé par : ippous

Date : 15/04/2005 11:15

Le problème de droits est résolu.

J'en ai un autre, maintenant qui ressemble à un problème d'encodage. En effet, j'ai le message d'erreur: XML Parsing Error: xml declaration not at start of external entity Location: http://ippous.dyndns.org/passxul/compte.php3 Line Number 2, Column 1:

alors que le fichier XML est apparement bien formé:

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:si="http://soapinterop.org/xsd" xmlns:tns="urn:EjaumTest">
<SOAP-ENV:Body>
<ns1:ListerComptesResponse xmlns:ns1="urn:EjaumTest"><return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:CompteDes[2]">
<item xsi:type="tns:CompteDes"><Compte xsi:type="xsd:string">Test1</Compte><Id xsi:type="xsd:int">1</Id></item>
<item xsi:type="tns:CompteDes"><Compte xsi:type="xsd:string">Test2</Compte><Id xsi:type="xsd:int">2</Id></item>
</return>
</ns1:ListerComptesResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Quelqu'un aurait'il une idée

[le moderateur : est ce possible que tu essayes de suivre la syntaxe wiki, et que tu fasse une preview de tes messages, que je n'ai pas à retoucher tout tes messages afin qu'ils soient lisibles ? Je sais c'est pas forcement pratique pour le moment, mais quand même. 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.