2010-12-27 15 views
2

私は、次の契約にWebサービスがあります。jqueryを使用してASMX Webサービスコールにカスタムヘッダを追加する方法は?

POST /Service/service.asmx HTTP/1.1 
Host: xxx.xxx.xxx 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 
SOAPAction: "xxx.xxx.xxx/Service/Method" 

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <Request xmlns="xxx.xxx.xxx/Service/"> 
     <transactiontype>string</transactiontype> 
     <username>string</username> 
     <password>string</password> 
    </Request> 
    </soap:Header> 
    <soap:Body> 
    <Method xmlns="xxx.xxx.xxx/Service/"> 
     <xml>xml</xml> 
    </Method> 
    </soap:Body> 
</soap:Envelope> 

そして、私はjqueryのを使用してサービスを呼び出すようにしようとしていますが。これは私のコードです:

$.ajax({ 
    url: serverUrl + 'Method', 
    type: "POST", 
    dataType: "xml", 
    data: { xml: "xml" }, 
    beforeSend: function (req) { 
     req.setRequestHeader('Header', '<Request xmlns="xxx.xxx.xxx/Service/">' 
          +'<transactiontype>4</transactiontype>' 
          +'<agencyName>name</agencyName>' 
          +'<username>user</username>' 
          +'<password>pass</password>' 
          +'</Request>');      
    }, 
    success: function (data) { 
     alert(data.text); 
    }, 
    error: function (request, status, errorThrown) { 
     alert(status); 
    } 
}); 

ただし、ヘッダーの内容はWebサービスに渡されません。 Webサービスコールにヘッダー認証情報を渡すにはどうすればいいですか?

+0

サービスでヘッダーがどのように定義されているかを示してください。また、C#クライアントプログラムを使用してヘッダーを渡すことはできますか? –

+0

XMLの内容が「ヘッダー」であると確信していますか? 「契約」からペイロードのように見えます。注: 'soap:Header'(XMLの単なる要素)は、HTTPヘッダーとは何も関係ありません。 –

+0

<リクエストのxmlns = "xxx.xxx.xxx/Service /"> 文字列 文字列 文字列 は私から得るものですWSDLヘッダーの定義方法を確認するにはどうすればよいですか?私はちょうど私がどのように私はユーザー認証情報を石鹸ベースのWebサービスに渡すだろうか知りたいのです – Mike

答えて

1

soap:Headerは、XML/SOAPデータ「ペイロード」内のXML要素です。これはHTTP headersとは異なります。契約では、SOAPActionContent-Lengthなどと同様)はHTTPヘッダーです。

XmlHttpRequest.setRequestHeaderは、HTTPヘッダーの指定に使用されます。それはXML内部のものとは何の関係もありません(直接)。

最初の回答はSimplest SOAP exampleで、SOAPリクエストの作成方法の例を挙げるべきです。注意:

xmlhttp.setRequestHeader("SOAPAction", "http://www.webserviceX.NET/GetQuote"); 
xmlhttp.setRequestHeader("Content-Type", "text/xml"); 
... 
var xml = '<?xml version="1.0" encoding="utf-8"?>' + 
    '<soap:Envelope...' + etc; 
xmlhttp.send(xml) 

それはsoap:Envelopeを含むXMLと子要素soap:Headersoap:Bodyです。

ハッピーコーディング。

関連する問題