2017-08-17 236 views
0

任何想法如何將下面的php代碼示例「轉化」爲NodeJS中的HTTP API請求?NodeJS API HTTP POST請求身份驗證

<?php 
$auth='<?xml version="1.0" encoding="UTF-8" ?> 
      <Auth> 
       <Username>...</Username> 
       <PasswordCrypt>...</PasswordCrypt> 
       <ShopId>...</ShopId> 
       <AuthCode>...</AuthCode> 
      </Auth>'; 
$params='<?xml version="1.0" encoding="UTF-8" ?> 
      <Params> 
       <Key>...</Key> 
      </Params>'; 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_POST, TRUE); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_URL, "https://api.unas.eu/shop/getOrder"); 
curl_setopt($curl, CURLOPT_POSTFIELDS,"auth=".$auth."&params=".$params); 
$response = curl_exec($curl); 

echo $response; 
?> 

參數必須以(auth,params,XML)POST變量發送。

許多THX提前,

親切的問候, 索爾特

回答

0

瀏覽器,你可以很容易做到的請求,並使用解析XML的jQuery:

$.ajax({ 
    url: "https://mail.google.com/mail/feed/atom/", 
    dataType: "xml", 
    success: function(data) { 
     console.log(data); 
    } 
}); 

或者,如果你只是想解析XML可以使用DOMParser():

parser = new DOMParser(); 
xmlDoc = parser.parseFromString(txt, "text/xml"); 

With Node.js它有點複雜。 Javascript熟悉JSON(JavaScript對象表示法),因此XML解析器中沒有構建。你必須需要某種形式的XML解析器模塊,例如:

  1. libxmljs
  2. xml-stream
  3. xmldoc
  4. cheerio - 實現了核心的jQuery的XML(和HTML)

一個子集完整示例:

var fetch = require('node-fetch'), //implements Fetch API for making requests 
    libxmljs = require("libxmljs"); //xml parser, read about it here: https://github.com/libxmljs/libxmljs 

fetch('http://SOME_PAGE.com/data?type=xml') 
.then((res) => res.text()) 
.then((xml) => { 
    var xmlDoc = libxmljs.parseXml(xml); 

    //do something with xmlDoc 

});