Я пытаюсь обработать это взаимодействие API с node.js (используя express и запрос), но у меня много проблем с данными.
Вот мой текущий код:
// Requirements
const express = require("express");
const bodyParser = require("body-parser");
const request = require("request");
const fs = require("fs");
const zlib = require("zlib");
const gunzip = require("gunzip-file");
const decompressResponse = require("decompress-response");
// Setting Up App
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
// Routes
app.get("/", (req, res) => {
res.send("App Running");
});
// API Integration
let responseXML = "";
let bodyXML =
'<?xml version="1.0" encoding="UTF-8"?><RequestMensagemCB><login>14087809000107</login><senha>xxxx</senha><mId>1</mId></RequestMensagemCB>';
const options = {
url: "http://webservice.newrastreamentoonline.com.br/",
method: "POST",
body: bodyXML
};
app.get("/onix", function(req, res) {
request(options, function(error, response, body) {
// body is the decompressed response body
console.log(
"server encoded the data as: " +
(response.headers["content-encoding"] || "identity")
);
console.log("the decoded data is: " + body);
})
.on("data", function(data) {
// decompressed data as it is received
console.log("decoded chunk: " + data);
})
.on("response", function(response) {
// unmodified http.IncomingMessage object
response.on("data", function(data) {
// compressed data as it is received
console.log("received " + data.length + " bytes of compressed data");
});
});
});
// Server Listening
app.listen(process.env.PORT || 3000, () => {
console.log("Server Online Listening to port 3000");
});
Это ответ console.log, который я получаю:
Используя почтальона, я могу достичь XML по следующему маршруту:
Сначала я делаю запрос на публикацию с XML, необходимым для проверки доступа API, затем я отправляю и скачиваю ответ, предоставляя ему расширение .gz и внутри. .gz есть сжатая версия файла, которая при открытии показывает ответ XML:
Я впервые работаю с API который возвращает данные в .gz таким образом. Я попытался передать данные с помощью zLib и теперь думал о следующем маршруте: загрузите ответ в .gz, распакуйте полученный файл, затем откройте его, чтобы получить XML. Я полагаю, есть лучший способ сделать это!