来自XML端点URL的REST API发布正文



我正在尝试向服务器发出发布请求(https://exampleapi.com/echo/post/xml)我有一段代码可以工作。我想要实现的是从URL加载XMLhttps://randomuser.me/api/?format=xml而不是包含在backticks中的XML。下面是我的代码示例:

var url = "https://exampleapi.com/echo/post/xml";
var xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.setRequestHeader("Content-Type", "application/xml");
xhr.setRequestHeader("Accept", "application/xml");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
console.log(xhr.status);
console.log(xhr.responseText);
}
};
var data = `<user>
<results>
<gender>male</gender>
<name>
<title>Mr</title>
<first>Jasper</first>
<last>Smith</last>
</name>
<location>
<street>
<number>1966</number>
<name>Chatham Road</name>
</street>
<city>Dunedin</city>
<state>Canterbury</state>
<country>New Zealand</country>
<postcode>63789</postcode>
<coordinates>
<latitude>66.6618</latitude>
<longitude>-110.4640</longitude>
</coordinates>
<timezone>
<offset>-10:00</offset>
<description>Hawaii</description>
</timezone>
</location>
<email>jasper.smith@example.com</email>
<login>
<uuid>8a132229-407b-47db-9a03-73c5d6c8c969</uuid>
<username>angryelephant526</username>
<password>nicole1</password>
<salt>saEREYSt</salt>
<md5>4292d6c17f10dad0224746c16f510032</md5>
<sha1>43d82fdd05fe62edcec774d534aaa41dde6c32dd</sha1>
<sha256>891f6c6f1193b59d70fd61c482575c9c04fa951123ec081e459b2a46235e1694</sha256>
</login>
<dob>
<date>1955-01-13T12:46:36.403Z</date>
<age>66</age>
</dob>
<registered>
<date>2015-08-05T20:56:20.380Z</date>
<age>6</age>
</registered>
<phone>(847)-575-4692</phone>
<cell>(051)-964-8266</cell>
<id>
<name/>
<value/>
</id>
<picture>
<large>https://randomuser.me/api/portraits/men/34.jpg</large>
<medium>https://randomuser.me/api/portraits/med/men/34.jpg</medium>
<thumbnail>https://randomuser.me/api/portraits/thumb/men/34.jpg</thumbnail>
</picture>
<nat>NZ</nat>
</results>
<info>
<seed>9dca58235eff2b2b</seed>
<results>1</results>
<page>1</page>
<version>1.3</version>
</info>
</user>`;
xhr.send(data);

您可以一个接一个地发出多个AJAX请求。

这里是xhr1利用来自xhr1的数据对第一url进行GET请求并且xhr2对第二url进行POST请求的示例。

const xhr1 = new XMLHttpRequest();
xhr1.open('GET', "https://randomuser.me/api/?format=xml");
xhr1.setRequestHeader("Accept", "application/xml");
xhr1.onload = function() {
xhr2.send(xhr1.responseXML); // get the data from xhr1 and send in xhr2
}
const xhr2 = new XMLHttpRequest();
xhr2.open('POST', "https://exampleapi.com/echo/post/xml");
xhr2.setRequestHeader("Content-Type", "application/xml");
xhr2.setRequestHeader("Accept", "application/xml");
xhr2.onload = function() {
console.log(xhr2.responseXML); // get the data from xhr2 and log it
}
xhr1.send();

您也可以使用fetch:

fetch("https://randomuser.me/api/?format=xml", { method: "GET", headers: { 'Accept': 'text/xml' } }).then(res => res.text()).then(data => {
fetch("https://exampleapi.com/echo/post/xml", { method: "POST", headers: { 'Content-Type': 'text/xml', 'Accept': 'text/xml' }, body: data }).then(res => res.text()).then(console.log);
})

最新更新