2017-06-14 41 views
0

我試圖通過nodejs腳本獲取grandstream手機的呼叫狀態。但我遇到了一些麻煩。第一個請求一切正常,並返回認證。第二個請求不好,它說我沒有通過身份驗證。從grandstream手機獲取nodejs的呼叫狀態

如何在第二個請求中從第一個請求中設置憑據或cookie,以便知道我已登錄?

第一請求響應:

Response=Success 
Message=Authentication accepted 
Needchange=0 
Ver=1.0.3.92 

第一請求響應標頭:

{ 
    'status': '200', 
    'content-length': '79', 
    'content-location': 'http://192.168.0.1/manager?action=login&username=XXXXXX&secret=XXXXXX', 
    'set-cookie': 'phonecookie="XXXXXX";HttpOnly, type=admin;, Version="1";, Max-Age=900', 
    'server': 'Enterprise Phone', 
    'pragma': 'no-cache', 
    'cache-control': 'no-cache', 
    'date': 'Wed, 14 Jun 2017 10:22:29 GMT', 
    'content-type': 'text/plain' 
} 

第二請求響應:

Response=Error 
Message=Authentication Required 

App.js腳本:

var fetch = require('node-fetch'); 

    var host = '192.168.0.1'; 
    var loginUrl = "/manager?action=login&username=XXXXXX&secret=XXXXXX"; 
    var statusUrl = "/manager?action=lineStatus&line=0"; 

    function makeRequest(url) 
    { 
     fetch("http://" + host + loginUrl).then(function(resultLogin) { 
      var resultAuth = result.body(); 

      fetch("http://" + host + statusUrl, {method: 'GET').then(function(resultStatus) { 
       var resultStatus = resultStatus.body(); 
      }); 


     }); 
    } 


makeRequest(); 

回答

0

使用fetch-cookienode-fetch根據網址存儲和發回cookies。

var fetch = require('fetch-cookie')(require('node-fetch')) 
+0

工程就像一個魅力! –