最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

从nodejs的https请求访问json响应数据的问题

IT培训 admin 8浏览 0评论

从nodejs的https请求访问json响应数据的问题

我使用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();
    });
回答如下:

那么你从帖子回来的东西不是一个有效的json对象。这一点就在这里:

'cmd-response':
   ' IEE457I 16.32.55 UNIT STATUS 464\r UNIT TYPE STATUS        VOLSER'' }

请注意,最后,VOLSER后跟''。这将结束字符串的开始值并打开一个新字符串。这是无效的JSON。

另外,我建议使用像axios这样的库或者来自npm的请求。写得好,使用广泛,而不是直接使用https模块。

从nodejs的https请求访问json响应数据的问题

我使用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();
    });
回答如下:

那么你从帖子回来的东西不是一个有效的json对象。这一点就在这里:

'cmd-response':
   ' IEE457I 16.32.55 UNIT STATUS 464\r UNIT TYPE STATUS        VOLSER'' }

请注意,最后,VOLSER后跟''。这将结束字符串的开始值并打开一个新字符串。这是无效的JSON。

另外,我建议使用像axios这样的库或者来自npm的请求。写得好,使用广泛,而不是直接使用https模块。

发布评论

评论列表 (0)

  1. 暂无评论