3

GET および POST HTTP 要求を含む Javascript からアクセスしようとしている REST サービス API があり、要求本文を含む Javascript から POST コマンドを取得するのに苦労しています。

Fiddler を使用して POST 要求を生成し、有効な応答を取得できますが、Javascript で同様のコードを記述する方法がわかりません。

Fiddler リクエストの例は次のようになります。

http://api.mydomain.com/xml/accounts/authenticate?api_key=12345678-1234-1234-1234-123456789012
Request Header:
Host: api.mydomain.com
content-type: text/xml
Content-Length: 123

Request Body:
<Authentication xmlns="http://schemas.mydomain.com/authentication">
 <Firstname>Joe</Firstname>
 <Lastname>Blow</Lastname>
</Authentication>

これを実行すると、Fiddler は次の生データを表示します。

POST http://api.mydomain.com/xml/accounts/authenticate?api_key=12345678-1234-1234-1234-123456789012 HTTP/1.1
Host: api.mydomain.com
content-type: text/xml
Content-Length: 143

<Authentication xmlns="http://schemas.mydomain.com/authentication">
 <Firstname>Joe</Firstname>
 <Lastname>Blow</Lastname>
</Authentication>

これは、同じ呼び出しを行うための Jquery Ajax 呼び出しでの私の最善の試みです。

function accessArctos() {
$.ajax({
    url: 'http://api.mydomain.com/xml/accounts/authenticate?api_key=12345678-1234-1234-1234-123456789012',
    type:"POST",
    data: '<Authentication xmlns="http://schemas.mydomain.com/authentication"><Firstname>Joe</Firstname><Lastname>Blow</Lastname></Authentication>',
    error: function() { alert("No data found."); },
    contentType: "text/xml",
    success: function (response) {
        alert('Success Auth Token:' + response);
    }
});
}

このコードを実行すると、Fiddler は生データを次のように表示します。

OPTIONS http://api.mydomain.com/xml/accounts/authenticate?api_key=12345678-1234-1234-1234-123456789012 HTTP/1.1
Host: api.mydomain.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: http://localhost:52381
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

Request body が表示されない理由がわかりません。Jquery ajax 呼び出しがこのタイプのリクエストを処理するための最良の方法であるかどうかはわかりません。どんな助けでも大歓迎です!

ありがとう!

4

1 に答える 1

0

responseText を見てください。

success: function (response, status, xhr) {
    console.log(xhr.responseText);
    alert('Success Auth Token:' + response);
}

そこにはおそらく正しいテキストが表示されますが、ドキュメントが無効であるため、responseXml は null になります。

なんで?線が抜けてるから

<?xml version="1.0" encoding="ISO-8859-1"?>

これにより、有効な XML ドキュメントになります

于 2013-06-05T13:56:51.717 に答える