2017-09-28 136 views
0

在我的node.js应用程序中,我想要进行https api调用。我正在尝试使用https模块,但它不起作用,但后来我尝试使用request模块,这很有效。Https请求在node.js中不起作用

不行

var options = { 
    host : 'myserver/platform-api/v1', 
    port : 80, 
    path : '/projects?access_token=38472', 
    method : 'GET', 
    headers : { 
     'Accept' : 'application/json' 
    } 
}; 
var req = https.request(options, function(res) { 
    res.on('data', function(chunk) { 
     console.log(chunk); 
    }); 
}); 
req.on('error', function(e) { 
    console.log(e); 
    console.log('problem with request:', e.message); 
}); 
req.end(); 

我得到这个

problem with request: getaddrinfo ENOTFOUND myserver/platform-api/v1 
myserver/platform-api/v1:80 

这个作品

request("https://myserver/platform-api/v1/projects?access_token=38472", function(error, response, body) { 
    if (error) return console.log(error); 
    //console.log(error); 
    //console.log(response); 
    console.log(body); 
}); 

我想不通为什么它不放在了第一位的工作。有谁知道为什么?

感谢

+0

而不是将选项作为参数传递也许传递options.path? –

回答

1

编辑交换端口443为好。您的host似乎包括路径的一部分?试试这个(左刚才主持人在host和移动路径path):

var options = { 
    host : 'myserver', 
    port : 443, 
    path : '/platform-api/v1/projects?access_token=38472', 
    method : 'GET', 
    headers : { 
     'Accept' : 'application/json' 
    } 
}; 
+0

为什么你传递对象中的所有东西不会将所有这些属性定义在别处? –

+0

我不确定你在问什么。 'port'默认为443,所以可以省略。你是这个意思吗? – smarx

+0

谢谢,这是港口,我有一部分在主机的路径。 – omega

2

而且,你打的是80端口,这通常不是HTTPS端口。

+0

好的,谢谢,我想通了,它是端口443,我有部分路径在主机。 – omega

+0

不客气。乐意效劳! – theGleep