2017-03-03 6 views
0

Node.js HTTPSリクエストについて質問があります。 要求はサーバーに送られ、JSON応答が返されます。次に、応答を解析して変数に格納し、他の関数と一緒に使用したいと考えています。Node.JS httpsリクエストがJSONを返す

let obj=JSON.parse(response); 
return obj; 

私が書かれている機能:

let protocol="https"; 
let hostStr="www.example.com"; 
let pathStr="***"; 

let students=makeRequest("ABCDEFG","getStudents")); 
console.log(students); 

function makeRequest(token,method){  
     let obj=''; 
     let options={ 
      host:hostStr, 
      path:pathStr, 
      method:"POST", 
      headers:{"Cookie":"JSESSIONID="+token} 
     }; 
     let https=require(protocol); 
     callback = function(response){ 
      var str=''; 

      response.on('data',function(chunk){ 
       str+=chunk; 
      }); 

      response.on('end',function(){ 
       obj=JSON.parse(str); 
      }); 
     } 
     let request=https.request(options,callback); 
     request.write('{"id":"ID","method":"'+method+'","params":{},"jsonrpc":"2.0"}'); 
     request.end(); 
     return obj; 
    } 

は、私はあなたが、あなたはJavascriptのasynchrone側を理解する必要がやりたいことには、私に

答えて

4

を助けることができると思います。非同期コールバックで文字列が更新されているため、何もできません。私は動作しなかった部分を修正しました。

let protocol="https"; 
 
let hostStr="www.example.com"; 
 
let pathStr="***"; 
 

 
makeRequest("ABCDEFG","getStudents")) 
 
    .then(students => { 
 
     // here is what you want 
 
     console.log(students); 
 
    }); 
 

 

 
function makeRequest(token,method){  
 
    return new Promise(resolve => { 
 
     let obj=''; 
 
     let options={ 
 
      host:hostStr, 
 
      path:pathStr, 
 
      method:"POST", 
 
      headers:{"Cookie":"JSESSIONID="+token} 
 
     }; 
 
     let https=require(protocol); 
 
     callback = function(response){ 
 
      var str=''; 
 

 
      response.on('data',function(chunk){ 
 
       str+=chunk; 
 
      }); 
 

 
      response.on('end',function(){ 
 
       obj=JSON.parse(str); 
 
       resolve(obj); 
 
      }); 
 
     } 
 
     let request = https.request(options,callback); 
 
     request.write('{"id":"ID","method":"'+ method +'","params":{},"jsonrpc":"2.0"}'); 
 
     request.end(); 
 
    }); 
 
}

Here you can read more about asynchonous in javascript

+0

ありがとうございました! 新しい問題が発生しました トークンを受け取ってから残りのコードを実行するまでトークンを待たなければなりません。 しかし、私の要求にサーバが応答するまで待つことはできません。それをどうすれば実現できますか? –

+0

これを行う最も簡単な方法は、最初のリクエストのコールバックの中で次のリクエストを行うことですが、非同期関数を探すことをお勧めします。そして、約束のようなlibrairiesをチェックしてください。 – NBeydon

関連する問題