我已经使用NodeJS的本机https模块对HTTPS函数进行了编码,以从API中获取一些JSON。
当我执行GET请求时,我的JSON就很好了,但是当我必须进行PUT请求时,我得到了JSON,但我无法将其转换为对象。
来自GET的答案:
{
items: [
{ dsname: 'A09999' },
{ dsname: 'A09999.ALLFILES.TEMP' },
],
returnedRows: 16,
JSONversion: 1
}
来自PUT的答案:
{
'cmd-response-key': 'C8124546',
'cmd-response-url':'https://myhost/zosmf/restconsoles/consoles/ibmusecn/solmsgs/C8124546',
'cmd-response-uri': '/zosmf/restconsoles/consoles/ibmusecn/solmsgs/C8124546',
'cmd-response':
' IEE457I 16.32.55 UNIT STATUS 464\r UNIT TYPE STATUS VOLSER' }
我的代码:
const makeRequest = options =>
new Promise(function(resolve, reject) {
let results = https.request(options, res => {
res.setEncoding('utf8');
let body = '';
res.on('data', data => {
body += data;
});
res.on('end', () => {
body = JSON.parse(body);
console.log('body :', body);
resolve(body);
});
});
if (options.body) {
// results.write(options.body);
results.write(JSON.stringify(options.body),['Transfer-Encoding', 'chunked']);
}
results.on('error', e => {
reject(e);
});
results.end();
});
答案 0 :(得分:1)
好吧,您从帖子中得到的不是有效的json对象。这一点就在这里:
'cmd-response':
' IEE457I 16.32.55 UNIT STATUS 464\r UNIT TYPE STATUS VOLSER'' }
请注意,最后VOLSER后跟到''。这将结束以值开头的字符串并打开一个新字符串。这是无效的JSON。
此外,我建议使用axios之类的库或npm的请求。写得好,使用广泛,不像直接使用https模块那样简单。