2016-12-23 19 views
1

サーバーからJSONを取得する簡単なHTTPクライアントを作成する必要があります。私はオブジェクトを生成したい。NodeJSでhttpリクエストを作成してオブジェクトを設定するにはどうすればよいですか?

私はNode.JS上のリクエストモジュールを使用しており、成功せずにコールバックを使用しようとしました。

チュートリアルで私を助けてくれますか?どんな助けもありがとう!

マイコード:

var sessionInfo = { 
    sessionId: 's1', 
    loginName: '' 
}; 

function populateSessionInfo(body) { 
    console.log("step4"); 
    sessionInfo.sessionId = "s2"; 
    sessionInfo.loginName = body.loginName; 
    console.log("sessionInfo.sessionId =>" + sessionInfo.sessionId); 
}; 

function loginOnServer(callback) { 
    console.log("step2"); 

    var options = { 
     url: SERVER_URL + '/stwebapi/user/connect', //URL to hit 
     method: 'POST', 
     json: true, // request automatically parse body 
     headers: { 
      'User-Agent': USER_AGENT 
     }, 
     form: { 
      username: USERNAME, 
      password: PASSWORD, 
      loginMethod: 'byPassword', 
      initialStatus: 1, // Available 
      initialStatusMessage: 'I am Available @ SametimeBot!' 
     } 
    }; 

    request(options, function(error, response, body) { 
     console.log("step3"); 
     if (error || response.statusCode != 200) { 
      console.error('Failed to contact ST Proxy server'); 
      return callback(error); 
     } 
     if (body.returnCode == 500) { 
      if (body.error == 4 || body.error == 2) { 
       console.log('Invalid User or Password'); 
       return callback(error); 
      } 
     } 
     return populateSessionInfo(body); 
    }); 
    console.log("step5"); 
}; 


console.log("step1"); 
loginOnServer(sessionInfo); 
console.log("step6"); 
console.log(sessionInfo); 
console.log("step7"); 

私は実行すると、結果は次のとおりです。

step1 
step2 
step5 
step6 
{ sessionId: 's1', loginName: '' } 
step7 
step3 
step4 
sessionInfo.sessionId =>s2 
+0

コールバックは正しく使用されていません。 –

+0

あなたの質問には明確な問題の説明がありません。サイトツアーを行ってください(トップバーの "ヘルプ"をクリックしてください)、[質問する方法](http://stackoverflow.com/help/asking)と[明確な問題の説明を作成する方法](http:// stackoverflow.com/help/mcve) –

答えて

0

あなたが適切にコールバックを使用していません。

お手伝いします。

var sessionInfo = { 
    sessionId: 's1', 
    loginName: '' 
}; 

function populateSessionInfo(body) { 
    console.log("step4"); 
    sessionInfo.sessionId = "s2"; 
    sessionInfo.loginName = body.loginName; 
    console.log("sessionInfo.sessionId =>" + sessionInfo.sessionId); 
}; 

function loginOnServer(callback) { 
    console.log("step2"); 

    var options = { 
     url: SERVER_URL + '/stwebapi/user/connect', //URL to hit 
     method: 'POST', 
     json: true, // request automatically parse body 
     headers: { 
      'User-Agent': USER_AGENT 
     }, 
     form: { 
      username: USERNAME, 
      password: PASSWORD, 
      loginMethod: 'byPassword', 
      initialStatus: 1, // Available 
      initialStatusMessage: 'I am Available @ SametimeBot!' 
     } 
    }; 

    request(options, function(error, response, body) { 
     console.log("step3"); 
     if (error || response.statusCode != 200) { 
      console.error('Failed to contact ST Proxy server'); 
      return callback(error, null); 
     } 
     if (body.returnCode == 500) { 
      if (body.error == 4 || body.error == 2) { 
       console.log('Invalid User or Password'); 
       return callback(error, null); 
      } 
     } 
     console.log("step5"); 
     return callback(body); 
    }); 
}; 


console.log("step1"); 
loginOnServer(sessionInfo, function(err, body){ 
    populateSessionInfo(body); 
    console.log("step6"); 
    console.log(sessionInfo); 
    console.log("step7"); 
}); 
関連する問題