目前我正在尝试使用https。获取函数以检索令牌,并对Yahoo进行常规API调用。当我构建一个长查询字符串并将其添加到url中,将整个url字符串作为第一个参数传递时,我似乎能够让它工作。
var finalUrl = host + path + "?" + paramString;
return new Promise(function(resolve, reject) {
var data = {
"error_str": "",
"errno": 0,
"return_code": 0,
"contents": ""
}
console.log("In promise function");
console.log("finalUrl: " + finalUrl);
var options = {
"host": host,
"path": path,
"headers": params,
"timeout": 2
};
console.log("options: " + JSON.stringify(options));
https.get(finalUrl, (res) => {
// resolves
然而,当我尝试https时。使用options对象,这样我就可以调整超时以适应更多数据密集型调用,但它失败了
https.get(options, (res) => {
// rejects
打印最终url会产生:
最终:
https://api.login.yahoo.com/oauth/v2/get_request_token?oauth_callback=oob&oauth_consumer_key=my_consumer_key&oauth_nonce=334283&oauth_signature_method=PLAINTEXT&oauth_timestamp=1514728974491&oauth_version=1.0&xoauth_lang_pref=en-us&oauth_signature=my_comsumer_secret%26
同时,当我构造选项时,它是这样的
{
"host":"https://api.login.yahoo.com",
"path":"/oauth/v2/get_request_token",
"headers":{
"xoauth_lang_pref":"en-us",
"oauth_callback": "oob", `
"oauth_consumer_key":"my_consumer_key",`
"oauth_nonce":334283,
"oauth_signature_method":"PLAINTEXT",
"oauth_timestamp":1514728974491,
"oauth_version":"1.0",
"oauth_signature":"my_consumer_secret&"
},
"timeout":2
}
然而,使用此有效负载执行get会产生
getaddrinfo ENOTFOUND
https://api.login.yahoo.com
https://api.login.yahoo.com:443