gpt4 book ai didi

node.js - Node HTTPS 请求 – MalformedJsonException

转载 作者:太空宇宙 更新时间:2023-11-03 23:02:43 25 4
gpt4 key购买 nike

我尝试使用 Node/HTTPS 发出 POST 请求,但不断收到此错误:

BODY: {"message":"MalformedJsonException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 11 path $","mdcKey":""}

这是发起请求的代码:

  const https = require('https');

const querystring = require('querystring');

const POSTData = querystring.stringify({
'addressTo': 'myemail@address.com',
'subject': 'testing your email template',
'templateName': 'genericTemplate',
'bodyText': 'this is a test'
});

console.log(POSTData);

const HTTPOptions = {
hostname: 'url.com',
port: 00000,
path: '/path',
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
};

const HTTPSrequest = https.request(HTTPOptions, (response) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
response.setEncoding('utf8');
response.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
response.on('end', () => {
console.log('No more data in response.');
});
});

HTTPSrequest.on('error', (error) => {
console.log(`problem with request: ${error}`);
});

// write data to request body
HTTPSrequest.write(POSTData);
HTTPSrequest.end();

我假设 POSTData 是“格式错误的 JSON”,字符串化后的样子如下:

addressTo=name%40companyname.com&subject=testing%20your%20email%20template&templateName=genericTemplate&bodyText=this%20is%20a%20test

我不确定我正在做的事情导致了格式错误的 JSON。我错过了什么?

最佳答案

您正在发送 application/x-www-form-urlencoded 有效负载,但告诉服务器它是 application/json。由于这种不匹配,服务器正在提示。

简单的解决方案应该是将 querystring.stringify 更改为 JSON.stringify

您可能还需要指定 Content-Length header ,因为某些服务器可能不支持分块请求(这是 Node 中的默认设置)。如果您确实添加此内容,请确保使用 Buffer.byteLength(POSTData) 作为 header 值,而不仅仅是 POSTData.length,因为前者适用于多字节字符,并且后者返回字符数(而不是字节数)。

关于node.js - Node HTTPS 请求 – MalformedJsonException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43419515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com