2011-12-15 2 views
0

Voici mon application AJAX dans laquelle je dois contacter mon service Web fonctionnant sur le serveur.Comment utiliser la requête SOAP dans un appel AJAX

function sendRequest(method, url) 
{ 
method == 'post'; 
{ 
http.open(method,url,true); 
http.onreadystatechange = handleResponse; 
http.send(null); 
} 
} 

C'est la requête SOAP que je pris de l'interface utilisateur SOAP, qui fonctionnait très bien

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.bayer.tata.com/" xmlns:tkw="http://tata.com/bayer" xmlns:chim="http://tata.com/chimera"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <ser:strategy> 
     <!--Optional:--> 
     <request> 
      <xmlMessage> 
<![CDATA[<test>or like this</test>]]> 
</xmlMessage> 
     </request> 
     </ser:strategy> 
    </soapenv:Body> 
</soapenv:Envelope> 

S'il vous plaît me dire comment puis-je utiliser utiliser ce message XML SOAP dans la fonction sendRequest. J'utilise seulement Java Script AJAX (rien comme Jquery, DOJO, ou tout)

Répondre

0

Je pense que this Post peut vous aider. Mais la plupart des serveurs Web vous permettent d'appeler des services web en utilisant HTTP Post (sans format SOAP dans la requête du corps) si la requête n'a pas besoin d'en-têtes SOAP ou d'autres choses bizarres.

Un exemple dans javaScript .NET et simple:

service Web .NET

<System.Web.Services.WebService(Namespace:="http://JuntaEx/Agricultura/SegurInfo/GestorFirmaExterno/")> _ 
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
<ToolboxItem(False)> _ 
Public Class GestorFirmaExterno 
    Inherits System.Web.Services.WebService 

<WebMethod(Description:="Retorna los documentos originales asociados a un identificador de firma pasado como parámetro.")> _ 
    Public Function ObtenerDocumentoOriginal(ByVal idFirma As String) As DocumentoED() 
//code 
    End Function 
End Class 

web.config:

<webServices> 
    <protocols> 
     <add name="HttpSoap"/> 
     <add name="HttpPost"/> <!-- Allows plain HTTP Post --> 
     <add name="HttpSoap12"/> 
     <!-- Documentation enables the documentation/test pages --> 
     <add name="Documentation"/> 
    </protocols> 
</webServices> 

demande JavaScript:

function crearRequest(url) { 

    if (window.XMLHttpRequest) { 
     peticion_http = new XMLHttpRequest(); 
    } 
    else if (window.ActiveXObject) { 
     peticion_http = new ActiveXObject('Microsoft.XMLHTTP'); 
    } 
    peticion_http.open('POST', url, true); //sync 
    peticion_http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    return peticion_http; 
} 

    peticion_http = crearRequest('http://localhost/wspuenteFirma/serviciopuente.asmx/ObtenerDocumentoOriginal'); 
    peticion_http.onreadystatechange = obtenerDocHandler; 
    var query_string = 'IdFirma=' + encodeURIComponent(docId); 
    peticion_http.setRequestHeader('Content-Length', query_string.length); 
    peticion_http.send(query_string); 

Vous envoyer ce requ HNE au serveur:

POST /wsGestorFirmaExterno/GestorFirmaExterno.asmx/ObtenerDocumentoOriginal HTTP/1.1 
Host: localhost 
Content-Type: application/x-www-form-urlencoded 
Content-Length: length 

idFirma=string 

et recive cette réponse du serveur:

HTTP/1.1 200 OK 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 

<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfDocumentoED xmlns="http://JuntaEx/Agricultura/SegurInfo/GestorFirmaExterno/"> 
    <DocumentoED> 
    <hash>string</hash> 
    </DocumentoED> 
    <DocumentoED> 
    <hash>string</hash> 
    </DocumentoED> 
</ArrayOfDocumentoED> 

Parse avec javascript pour obtenir les informations dont vous avez besoin. PS: vous pouvez configurer le serveur et la requête du navigateur pour envoyer et recevoir des données JSON au lieu de XML.

J'espère que ça aide.

+0

Merci pour votre temps et votre réponse, encore je suis confus (je suis dans la technologie Java) et pourriez-vous s'il vous plaît me dire dans la demande AJAX où vous utilisez réellement la demande SOAP ?? – Pawan

+0

Voilà le point. Je ne suis pas une demande SOAP. Je consomme un service web en javascript sans tous les trucs SOAP. Je vous dis juste que vous n'avez peut-être pas besoin d'utiliser SOAP pour demander un service web. Je suggère juste une approche différente. – jlvaquero

+0

Quoi qu'il en soit, avez-vous vérifié le lien en haut de ma réponse? Il explique tout ce que vous voulez savoir sur SOAP en javascript. – jlvaquero

Questions connexes