2017-12-31 161 views
0

現在、https.get関数を使用してトークンを取得し、Yahooに一般的なAPIコールを行うようにしています。長いクエリ文字列を作成してURLに追加して、最初の引数としてURL文字列全体を渡すと、それを動作させることができるようです。Nodejs HTTPSペイロードを構築する

しかし
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.getを試してみてくださいので、私はより多くのデータ集約型のコールのタイムアウトを調整することができ、オブジェクト、それは最終URL収率を印刷

https.get(options, (res) => { 
// rejects 

を失敗:

finalUrl:

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 
} 

しかし、このペイロードの収率で得る

のgetaddrinfoのENOTFOUND https://api.login.yahoo.comhttps://api.login.yahoo.com:443

答えて

0

を実行する方法の2つの大きな問題があるように一方、それが見えますoptionsオブジェクトを作成しています。

第1の点は、hostアイテムが宛先ホスト名(この場合は"api.login.yahoo.com")だけを指定することになっていることです。 "https:"の部分は別のアイテムで指定する必要があります。このため、ENOTFOUNDエラーが発生しています。

クエリ文字列は、pathアイテムの一部として含まれることになっています。だから、を作成したときと同じように、pathのコンテンツを作成する必要があります。 headersアイテムは全く別の目的で使用されています。これにより、クエリ文字列要素ではなく、追加のHTTP要求ヘッダーを指定できます。ここにheadersという項目は必要ありません。

https://nodejs.org/docs/latest-v6.x/api/http.html#http_http_request_options_callbackのNode.jsドキュメントにあるoptionsのすべての項目について読むことができますが、ほとんどのオプション項目はこの場合は無関係です。 host、、pathの項目を使用する必要があります。このWebページでは、今あなたが持っているアイテムがなぜ無効であるのかを教えてくれます。

関連する問題