обратный вызов запроса, не может получить доступ к ошибке, ответу и телу - PullRequest
0 голосов
/ 23 апреля 2019

Я создаю запрос 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 (). Я использую функцию обратного вызова для запуска кода, который находит скрытый ввод после завершения запроса. Я следую примеру отсюда.

Я что-то упустил?

1 Ответ

1 голос
/ 23 апреля 2019

Вы выполняете this.getHiddenInputs() вместо того, чтобы передавать его на запрос в качестве обратного вызова, поэтому реальный обратный вызов не передается на запрос вызова.

Вы можете передать его следующим образом this.getHiddenInputs.bind(this) или япредпочитаю что-то вроде этого (error, response, body) => this.getHiddenInputs(error, response, body)

...