请求回调,无法访问错误、响应和正文
request callback, can't acces error, response and body
我正在创建一个 https 请求,以获取登录页面上的一些隐藏变量。为此,我正在使用 node.js 包请求。调用请求后,我使用回调返回到我的解析函数。
class h {
constructor(username, password){
this.username = username;
this.password = password;
this.secret12 = '';
}
init() {
//Loading H without cookie
request({
uri: "http://example.com",
method: "GET",
jar: jar,
followRedirect: true,
maxRedirects: 10,
timeout: 10000,
//Need to fake useragent, otherwise server will close connection without response.
headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
},
this.getHiddenInputs());
}
getHiddenInputs(error, response, body) {
if (!error && response.statusCode === 200) {
//Parsing body of request, to get hidden inputs required to mock legit authentication.
const dom = new JSDOM(body);
this.secret12 = (dom.window.document.querySelector('input[value][type="hidden"][name="secret12"]').value);
}
else {
console.log(error);
console.log(response.statusCode)
}
};
}
const helper = new h("Username", "Password");
helper.init();
console.log(helper);
因此在 init() 中调用请求之后。我正在使用回调函数 运行 在完成请求后找到隐藏输入的代码。 I'm following the example from here.
我错过了什么吗?
您正在执行 this.getHiddenInputs()
而不是将其作为回调传递给请求,因此没有为请求调用提供实际的回调。
你可以这样传递 this.getHiddenInputs.bind(this)
或者我更喜欢这样 (error, response, body) => this.getHiddenInputs(error, response, body)
我正在创建一个 https 请求,以获取登录页面上的一些隐藏变量。为此,我正在使用 node.js 包请求。调用请求后,我使用回调返回到我的解析函数。
class h {
constructor(username, password){
this.username = username;
this.password = password;
this.secret12 = '';
}
init() {
//Loading H without cookie
request({
uri: "http://example.com",
method: "GET",
jar: jar,
followRedirect: true,
maxRedirects: 10,
timeout: 10000,
//Need to fake useragent, otherwise server will close connection without response.
headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
},
this.getHiddenInputs());
}
getHiddenInputs(error, response, body) {
if (!error && response.statusCode === 200) {
//Parsing body of request, to get hidden inputs required to mock legit authentication.
const dom = new JSDOM(body);
this.secret12 = (dom.window.document.querySelector('input[value][type="hidden"][name="secret12"]').value);
}
else {
console.log(error);
console.log(response.statusCode)
}
};
}
const helper = new h("Username", "Password");
helper.init();
console.log(helper);
因此在 init() 中调用请求之后。我正在使用回调函数 运行 在完成请求后找到隐藏输入的代码。 I'm following the example from here.
我错过了什么吗?
您正在执行 this.getHiddenInputs()
而不是将其作为回调传递给请求,因此没有为请求调用提供实际的回调。
你可以这样传递 this.getHiddenInputs.bind(this)
或者我更喜欢这样 (error, response, body) => this.getHiddenInputs(error, response, body)