在node.js中调用https Web服务(在代理后面)
我正在尝试从node.js调用https web服务。 我在一个代理的后面,所以我提供代理和端口的凭据与选项一起。 但是我收到以下错误
[Error: 2060:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol :openssl\ssl\s23_clnt.c:683: ]
以下是我试图调用https web服务的代码片段:
var https = require('https'); var username = 'username'; var password = 'password'; var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64'); var data = ''; var options = { hostname: 'proxy', port: 8080, path: 'https://crm.zoho.com/crm/private/json/Leads/getMyRecords?authtoken=11111tsvs26677026bcba45ae3f&scope=crmapi', headers: { "Proxy-Authorization" : auth } }; console.log("options- " + JSON.stringify(options) + '\n'); var req = https.request(options, function(res) { console.log("statusCode- " + res.statusCode); console.log("headers-" + res.headers); res.on('data', function(chunk) { data += chunk; }); res.on('end', function (chunk) { console.log('response-' + data); }); }); req.end(); req.on('error', function(e) { console.error(e); });
任何人都可以请帮我解决这个问题?
在此先感谢,马诺吉
我有错误的使用相同的问题
var https = require('https');
但是,我的代理只需要HTTP,代理将负责完成请求HTTPS,因为您将其设置为path参数
(...) path: 'https://crm.zoho.com/crm/private/json/Leads/getMyRecords?authtoken=11111tsvs26677026bcba45ae3f&scope=crmapi', (...)
这适用于我:
// baiken9: use http here var http = require('http'); var username = 'username'; var password = 'password'; var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64'); var data = ''; var options = { hostname: 'proxy', // baiken9: Proxy Port port: 8080, // baiken9: Add method type in my case works using POST method: "POST", // baiken9: when proxy redirect you request will use https. It is correct as is path: 'https://crm.zoho.com/crm/private/json/Leads/getMyRecords?authtoken=11111tsvs26677026bcba45ae3f&scope=crmapi', headers: { // baiken9: I cannot test it my proxy not need authorization "Proxy-Authorization" : auth, // baiken9: required for redirection host: "crm.zoho.com", // baiken9: length of data to send 'content-length': 0 } }; console.log("options- " + JSON.stringify(options) + '\n'); var req = http.request(options, function(res) { console.log("statusCode- " + res.statusCode); console.log("headers-" + res.headers); res.on('data', function(chunk) { data += chunk; }); res.on('end', function(chunk) { console.log('response-' + data); }); }); req.end(); req.on('error', function(e) { console.error(e); });
输出继电器:
statusCode- 200 headers-[object Object] response-{"response":{"error":{"message":"Invalid Ticket Id","code":"4834"}}}
亲切的问候