Page 1 sur 1
Problème de récupération de réponse avec Javascript
Publié : 08 juin 2004, 12:18
par Mart-gemini
Bonjour à tous,
mon problème est le suivant : j'envoie une requête Http avec du code JS et je reçois bien une réponse (vérif avec Ethereal) mais je n'ai jamais de retour visuel !
Plus de détail : les réponses et requêtes sont en SOAP, j'utilise Mozilla (les APIs SOAP n'existe pas pour IE de toutes façons) et j'ai parfois des messages d'erreur sur ma console JS mais je ne suis pas certain de la correspondance.
En bref je ne sais même pas s'il s'agit d'un problème d'affichage ou de récup de données.
Chose bizarre : quand il y a une erreur dans les arguments de la requête, les fault du serveur s'affiche
Y a-t-il un docteur dans la salle ?
Publié : 08 juin 2004, 14:13
par calimo
Il y en a, mais un docteur qui ne voit pas le patient ne pourra pas poser de diagnostic

Publié : 08 juin 2004, 15:33
par Mart-gemini
alors puisqu'il y a un docteur voilà le patient :
Code : Tout sélectionner
<script>
/////////////////////////////////////////////////////
// Méthode d'appel d'une opération d'un WebService //
/////////////////////////////////////////////////////
function callSimple(method,params,callback,transport,targetNS,soapAction,responseTag)
{
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
alert(e);
return false;
}
var soapCall = new SOAPCall();
soapCall.actionURI = soapAction;
soapCall.transportURI = transport;
// transportURI => URI du point final du service (dans <service>)
if (params == null) {
soapCall.encode(0, method, targetNS, 0, null, 0, null);
} else {
soapCall.encode(0, method, targetNS, 0, null, params.length, params);
}
// method => nom de l'operation ; targetNamespace dans l'element <definitions>
alert("passage ici");
var soapCallCompletion = soapCall.asyncInvoke(
function (response, soapcall, error)
{
alert("dans invoke");
var r = handleSOAPResponse(response,soapcall,error);
alert("r ="+r);
callback(r,responseTag);
}
);
alert("passage la");
soapCallCompletion.abort();
}
///////////////////////////////////////////////////////
// Récupération de la réponse SOAP et test si valide //
///////////////////////////////////////////////////////
function handleSOAPResponse(response,call,error)
{
if (error != 0) {
alert("Service failure");
return false;
} else {
var fault = response.fault;
if (fault != null) {
var code = fault.faultCode;
var msg = fault.faultString;
alert("SOAP Fault:\n\n" + "Code: " + code + "\n\nMessage: "+msg);
return false;
} else {
return response;
}
}
}
////////////////////////////////////////////
// Appel des différents WebService testés //
////////////////////////////////////////////
function call()
{
//nom de l'operation appelée
//transportURI
//targetNS
//SOAPAction
//Response Tag
// contact WebService Amazon
var parm = new Array();
var obj = new KeywordRequest();
parm[0] = new SOAPParameter(obj,"KeywordSearchRequest");
parm[0].namespaceURI = "http://soap.amazon.com"; //schema TargetNameSpace
callSimple("KeywordSearchRequest",parm,parseResult,"http://soap.amazon.com/onca/soap2","http://soap.amazon.com","http://soap.amazon.com","return");
}
///////////////////////////////////////////////////////////
// Parsing de la réponse et affichage des données reçues //
///////////////////////////////////////////////////////////
function parseResult(result,tag)
{
if (result == false)
{
alert("result is not a valid SOAPResponse");
return;
}
alert("dans parse");
var returnedParams = respObj.getParameters(true,{});
var matches = returnedParams[0].element.getElementsByTagName(tag);
var elementRef = returnedParams[1].element.firstChild.firstChild;
alert("reponse : "+elementRef.nodeValue);
}
/////////////////////////////////////////////////
// Méthode de construction d'un objet complexe //
/////////////////////////////////////////////////
function KeywordRequest()
{
this.keyword="spears";
this.page="1";
this.mode="music";
this.tag="webservices-20";
this.type="lite";
this.devtag="00000000000000";
this.sort="";
this.variations="";
this.locale="";
}
</script>
please help !
Edit admin : merci d'utiliser les balises code prévues afin de rester lisible 