gpt4 book ai didi

node.js - 如何在 NodeJS 中发出 http 请求并填充对象?

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:43 26 4
gpt4 key购买 nike

我需要创建一个简单的 HTTP 客户端,从服务器获取 JSON。在我想填充一个对象之后。

我在 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

最佳答案

您没有正确使用回调。

希望对您有帮助。

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");
});

关于node.js - 如何在 NodeJS 中发出 http 请求并填充对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41305234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com