2011-12-15 12 views
0

これは私のAJAXアプリケーションで、サーバーで動作しているWebサービスに連絡する必要があります。AJAXコールでSOAPリクエストを使用する方法

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

これは私がどのように私はのsendRequest関数内でこのSOAPのXMLメッセージを使用して使用することができますを教えてください細かい

<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> 

を働いていたSOAP UIから拾ったSOAPリクエストです。 私はプレーンJavaスクリプトAJAX(Jquery、DOJO、またはanyのようなものはありません)のみを使用しています

答えて

0

私はthis Postがあなたを助けることができると思います。しかし、ほとんどのWebサーバーでは、要求にSOAPヘッダーやその他の奇妙なものが必要ない場合は、プレーンなHTTP Post(本体要求のSOAPフォーマットなし)を使用してWebサービスを呼び出すことができます。 .NETと平野JavaScriptで

例:

.NET Webサービス

<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> 

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); 

あなたはこの要求を送るサーバーへのEST:

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

idFirma=string 

、サーバーからこの応答をrecive:

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> 

はあなたが必要とする情報を得るために、JavaScriptでそれを解析します。

PS:XMLの代わりにJSONデータを送受信するようにサーバーとブラウザのリクエストを設定できます。

私はそれが役に立ちそうです。

+0

あなたの時間と応答のおかげで、まだ私は混乱しています(私はJava関連の技術に慣れています)、実際にSOAPリクエストを使用しているAJAXリクエストで教えてください。 – Pawan

+0

それがポイントです。私はSOAPリクエストを使用していません。私はすべてのSOAPのものがなくてもjavascriptでWebサービスを完成させています。私はちょうどあなたがWebサービスを要求するためにSOAPを使用する必要はないことを伝えています。ちょうど別のaproachを提案する。 – jlvaquero

+0

とにかく、私の答えの先頭にあるリンクをチェックしましたか?これは、javascriptでSOAPについて知りたいことすべてを説明しています。 – jlvaquero

関連する問題