Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 是否使用node.js v4.2.6连接到HTTPS web服务API?_Json_Node.js_Web Services_Https - Fatal编程技术网

Json 是否使用node.js v4.2.6连接到HTTPS web服务API?

Json 是否使用node.js v4.2.6连接到HTTPS web服务API?,json,node.js,web-services,https,Json,Node.js,Web Services,Https,我正在考虑连接到https web api,我通过接收一封关于它的电子邮件获得了我的令牌和用户名,并且实际上没有任何示例代码可以使用node连接到它;然而,也有Java和C#的示例,基于这些示例,我提出了 /* WEB API: https://www.careeronestop.org/Developers/WebAPI/technical-information.aspx?frd=true */ // UserID: ... // Token Key: ...== // Your agr

我正在考虑连接到https web api,我通过接收一封关于它的电子邮件获得了我的令牌和用户名,并且实际上没有任何示例代码可以使用node连接到它;然而,也有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
,因此是否需要添加任何内容才能使其正常工作?可能有一些头?

我过去常常提交一个请求,然后查看Chrome调试器网络选项卡以查看到底发送了什么请求

授权标头应如下所示:

Authorization: Bearer 901287340912874309123784
您还需要:

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

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

我看到的API访问示例(Java)使用名为“Bearer”的自定义头作为令牌,而不是像“Authorization”这样的头。你有没有看到一些文件建议你应该使用“授权”?还有,为什么要使用缓冲区?标题是字符串,不是二进制的。它还显示了“application/json”的一个“Accept”头。@jfriend00你是在说这个吗
httpGet.setHeader(“授权”、“承载API令牌”)
No,我不懂Java,但我看到的是:
http.DefaultRequestHeaders.Authorization=newauthenticationheadervalue(“承载”、“您的API令牌”)你在看什么文档?uou是否尝试过这样的“授权”:“+tokenKeyFYI,如果你对原始HTTP请求的外观感到困惑,你可以使用,然后在Chrome调试器中打开网络选项卡,查看它到底发送了什么请求。