Сохраните http-запрос в переменной - PullRequest
0 голосов
/ 04 марта 2019

Мне удалось заставить работать API для продукта, который я начал использовать, я могу успешно запустить приведенный ниже код и обновить запись в базе данных API (я удалил весь XML-код API для API, чтобы он выглядел чище), Я пытаюсь сохранить вывод как переменную, чтобы затем обработать его в php,

Я новичок в Javascript, но не могу найти много помощи по сохранению вывода.

Если бы кто-то мог указать мне правильное направление, я был бы всегда благодарен,

Мне просто нужно вывести файл console.log в переменной, а не в консоли.

var https = require("https");
var xml =
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
'<soap:Header>' +
'</soap:Header>' +
'<soap:Body>' +
'</soap:Body>' +
'</soap:Envelope>';
var username = "";
var password = "";

var options = {
    host: "",
    port: 443,
    method: "POST",
    path: "",
    // authentication headers
    headers: {
        'Content-Type': "text/xml; charset=utf-8",
        'Content-Length': Buffer.byteLength(xml),
        'Authorization': "Basic " + new Buffer(username + ":" + password).toString("base64"),
        'SOAPAction': "", 
        'Accept': "application/json"
    }
};
//The call
request = https.request(options, function (res) {
    console.log("statusCode:", res.statusCode);

    res.on("data", (d) => {
        process.stdout.write(d);
    });
});

request.on("error", (e) => {
    console.error(e);
});

request.end(xml);

1 Ответ

0 голосов
/ 04 марта 2019

Если вы хотите сохранить выходные данные, то вам нужно сохранить данные из переменной, содержащей выходные данные (которую вы назвали d).

console.log("statusCode:", res.statusCode);

var data = "";

res.on("data", (d) => {
    data += d;
});

res.on("end", x => {
    // data is now ready 
});

Обратите внимание, что вы, вероятно, запуститев вопросе, описанном в в этом вопросе , и вам, вероятно, будет лучше использовать клиентскую библиотеку HTTP, которая изначально поддерживает обещания, такие как Axios.

...