如何在Vue中发送XML格式请求?

时间:2019-05-18 21:50:35

标签: javascript xml vue.js xmlhttprequest axios

我正在尝试将API用于我从事的小型企业的预订系统,以改善我们的Vue网站。 API文档提供了以下使用PHP的示例请求:

<?php
//Change the following
//
$host = "hostUrl";
$token = "zapiApiToken";
$accountId = "accountId";
$userId = "userId";

$xmlRequest = ("
  <request>
    <zapiToken>$token</zapiToken>
    <zapiAccountId>$accountId</zapiAccountId>
    <zapiUserId>$userId</zapiUserId>
    <zapiMethod>
      <methodName>zapiPing</methodName>
    </zapiMethod>
  </request>
");
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ($xmlRequest));

$response = curl_exec ($ch);
curl_close ($ch);

//parse out the XML here, and do stuff
//
echo ("$response");
exit;

文档还提出以下几点:

  • 所有请求均为POST
  • 所有请求均采用XML格式,并为每个函数调用正确设置格式
  • 所有回复均以XML格式

如何在Vue中复制此示例请求(最好使用Axios,但允许使用XMLHttpRequest等其他方法)?

到目前为止,我已经尝试了以下两种方法(将令牌,userId,accountId,方法,url,xml定义为变量):

XMLHttpRequest

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    console.log(xhttp.responseText);
  }
};
xhttp.open("POST", url, true);
xhttp.send(xml);

Axios

axios.post(url, xml)
  .then(res => {
    console.log(res);
  })
  .catch(err=>{
    console.log(err)
  })

在上述两个示例中,收到的响应都是baseURL的XML,而不是zapiPing方法的预期响应。

谢谢!

0 个答案:

没有答案