【发布时间】:2017-11-08 03:06:51
【问题描述】:
邮政服务有一个 API,允许您发送包含包裹重量、旅行信息等的 xml 请求。它将返回一个 xml 响应。
如何处理 xml 响应?我需要在客户端解析 xml,或者更可取的是,将 xml 放在一个变量中,我可以发送到我的 laravel 后端进行解析。
顺便说一句,我正在使用 react 和 laravel。
getPostagePrice = () => {
fetch('http://production.shippingapis.com/ShippingApi.dll?API=RateV4&XML=<RateV4Request USERID="XXXXXXXXXXX"><PackageID="1ST"><Service>PRIORITY</Service><ZipOrigination>44106</ZipOrigination><ZipDestination>20770</ZipDestination><Pounds>1</Pounds><Ounces>8</Ounces><Container>NONRECTANGULAR</Container><Size>LARGE</Size><Width>15</Width><Length>30</Length><Height>15</Height><Girth>55</Girth></Package></RateV4Request>', {
method: 'get',
}).then((response) => {
console.log(response.text());
}).then(str => (new window.DOMParser()).parseFromString(str, "text/xml")
).then(data => console.log(data));
}
【问题讨论】:
-
阅读fetch documentation ...通常你会
.then((response) => response.text())和下一个.then会有可用的文本......即用return response.text()替换console.log(response.text())以便你返回 一些东西 -
@JaromandaX 注意,“某物”是
Promise、.text()、.blob()、.arrayBuffer(),如果在环境中实现,.formData()是Response对象每个返回一个Promise -
我的意思是第一个 .then 根本没有返回任何东西,并且确实指出它应该返回
response.text()- 所以,不确定你要表达什么意思 @ guest271314 -
@JaromandaX 不想说明问题。仅表示
Response的.text()方法返回一个Promise,而不是“某物” -
是的,最后我的措辞很草率:p
标签: javascript laravel reactjs fetch