Как отправить запрос в формате XML в Vue? - PullRequest
1 голос
/ 19 мая 2019

Я пытаюсь использовать 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, method, 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.post(url, xml)
  .then(res => {
    console.log(res);
  })
  .catch(err=>{
    console.log(err)
  })

В обоих приведенных выше примерах получен ответ - XML ​​baseURL, а не ожидаемый ответ метода zapiPing.

Заранее спасибо!

...