簡體   English   中英

REST API 柱體來自 XML 端點 ZE6B391A8D2C4D45903A23A8B65857

[英]REST API Post body from XML endpoint URL

我正在嘗試向服務器( https://exampleapi.com/echo/post/xml )發出發布請求,並且我有一段可以工作的代碼。 What I want to achieve is to have the XML load from the URL https://randomuser.me/api/?format=xml rather than the XML contained in the backticks. 以下是我的代碼示例:

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向第一個 url 發出GET請求,而 xhr2 使用來自xhr1的數據向第二個xhr2發出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);
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM