无法读取节点 js 中的八位字节流响应?
Unable to read octet stream response in node js?
我有一个 API returns 响应为 'octet-stream'。这是相同的 swagger 定义。
responses: {
'200': {
description: 'Will return the pdf for an invoice',
content: {
'application/octet-stream': {
schema: '',
},
},
},
}
来自 postman 和 swagger ui 我可以将回复保存为 PDF 文件。但是对于节点,我无法编写 pdf 文件。
下面是node js调用API.
的代码
var fs = require('fs');
var request = require('request');
let headers = {
'Content-Type': 'application/json',
'accept': "application/octet-stream",
}
let body = {
"invoiceId": "343",
"slCompId": 243,
"platfromCompId": "4620816365013235830"
}
request.post({
headers,
url: 'http://localhost:3001/invoice/',
json: body
},
function (error, response, body) {
console.log(response);
console.log("response");
fs.writeFile('a.pdf', response.body, 'binary')
});
编辑:
写入的PDF文件已损坏。文件内没有任何内容,PDF 查看器在打开文件时显示错误。
我找到了解决这个问题的方法。我尝试用 buffer
作为 true
.
用 superagent 击中 API
async function getData() {
try {
var fs = require('fs');
let res = await superagent
.get('https://localhost:3000/invoice')
.set("Content-Type", "application/json")
.set("accept", "application/octet-stream")
.buffer(true).disableTLSCerts()
console.log(res)
fs.writeFile('a.pdf',res.body)
}
catch(error) {
console.log("error " + error)
}
}
我有一个 API returns 响应为 'octet-stream'。这是相同的 swagger 定义。
responses: {
'200': {
description: 'Will return the pdf for an invoice',
content: {
'application/octet-stream': {
schema: '',
},
},
},
}
来自 postman 和 swagger ui 我可以将回复保存为 PDF 文件。但是对于节点,我无法编写 pdf 文件。
下面是node js调用API.
的代码var fs = require('fs');
var request = require('request');
let headers = {
'Content-Type': 'application/json',
'accept': "application/octet-stream",
}
let body = {
"invoiceId": "343",
"slCompId": 243,
"platfromCompId": "4620816365013235830"
}
request.post({
headers,
url: 'http://localhost:3001/invoice/',
json: body
},
function (error, response, body) {
console.log(response);
console.log("response");
fs.writeFile('a.pdf', response.body, 'binary')
});
编辑:
写入的PDF文件已损坏。文件内没有任何内容,PDF 查看器在打开文件时显示错误。
我找到了解决这个问题的方法。我尝试用 buffer
作为 true
.
async function getData() {
try {
var fs = require('fs');
let res = await superagent
.get('https://localhost:3000/invoice')
.set("Content-Type", "application/json")
.set("accept", "application/octet-stream")
.buffer(true).disableTLSCerts()
console.log(res)
fs.writeFile('a.pdf',res.body)
}
catch(error) {
console.log("error " + error)
}
}