Problème de récupération de réponse avec Javascript

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Mart-gemini
Arias
Messages : 2
Inscription : 08 juin 2004, 12:08

Problème de récupération de réponse avec Javascript

Message 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 :shock:

Y a-t-il un docteur dans la salle ?
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Il y en a, mais un docteur qui ne voit pas le patient ne pourra pas poser de diagnostic :roll:
Mart-gemini
Arias
Messages : 2
Inscription : 08 juin 2004, 12:08

Message 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 :)
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités