使用node.js v4.2.6连接到HTTPS Web服务API?

时间:2016-12-08 14:46:56

标签: json node.js web-services https

我正在考虑连接到https网络API,我已经通过接收有关它的电子邮件获取了我的令牌和用户名,并且没有任何示例代码可以连接到the webservice使用节点;但是有一些Java和C#的例子,基于这些就是我想出来的......

/* WEB API: https://www.careeronestop.org/Developers/WebAPI/technical-information.aspx?frd=true  */

// UserID: ...
// Token Key: ...==
// Your agreement will expire three years from today on 12/8/2019 and all Web API services will be discontinued,
// unless you renew.

var https = require('https');
var username = '...';
var tokenKey = "...==";

var options = {
  host: 'api.careeronestop.org',
  port: 443,
  path: '/v1/jobsearch/' + username + '/Computer%20Programmer/15904/200/2',
  method: 'GET',
  headers: {
    'Content-Type' : 'application/json',
    'Authorization' : '' + new Buffer(tokenKey.toString('base64'))
  }
};

var req = https.request(options, function(res) {
  console.log(res.statusCode);
  res.on('data', function(d) {
    process.stdout.write(d);
  });
});
req.end();

req.on('error', function(e) {
  console.error(e);
});

不幸的是,它会返回一个401 Unauthorized,那么是否需要添加任何内容才能使其正常工作?有些标题可能吗?

1 个答案:

答案 0 :(得分:0)

我使用this form提交请求,然后查看了Chrome调试器网络标签,以确切了解发送的请求。

授权标题应该如下所示:

Authorization: Bearer 901287340912874309123784

你也想要这个:

Accept: application/json

因此,假设tokenKey已经是一个字符串,因为它似乎是通过电子邮件发送给您的,您可以将代码更改为:

  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',  
    'Authorization': 'Bearer ' + tokenKey
  }