2016-06-23 10 views
1
var http = require('http'); 
exports.get = function(){ 
    var options = { 
    host: 'http://stackoverflow.com/' 
    }; 

    http.get(options, function(res) { 
    console.log("Got response: " + res.statusCode); 
    }).on('error', function(e) { 
    console.log("Got error: " + e.message); 
    }); 
}; 

私にはエラーGot error: getaddrinfo ENOTFOUND http://stackoverflow.com/ http://stackoverflow.com/:80 が返されます。 https://nodejs.org/docs/v0.5.2/api/http.html#request.urlhttp get nodejs

何が問題になる可能性がありますか、私はオプションにポート番号を追加しました。

var options = { 
    host: 'http://stackoverflow.com/' 
    port:443 //also port:8080, port:80, port: 8118 
}; 

しかし解決策はまだありません。それは企業のプロキシについてですか?

どうすればリンクにアクセスできますか?

+0

リクエストモジュールを使用して見てください:https://github.com/request/request – MrWillihog

答えて

3

ホストはURLではありません。お試しください。

stackoverflow.com

var options = { 
    host: 'stackoverflow.com', 
    port: 80, 
    path: '/', 
    method: 'GET' 
}; 

var req = http.request(options, function(res) { 
    console.log('STATUS: ' + res.statusCode); 
    console.log('HEADERS: ' + JSON.stringify(res.headers)); 
    ... 
+0

私はあなたの例として書いていますが、それでも私には 'uncaughtException:getaddrinfo ENOTFOUND'の理由がありますか? – user6468132

+0

ネットワークに問題がある可能性がありますか?コマンドラインから 'curl http:// stackoverflow.com'を試してください。 –

0

この問題は、時にはホストに応じて発生し、「stackoverflow.com」のようないくつかのホストが200を返すことがありますし、あなたのようなホスト変数を埋める必要がありますので、「google.com」のようないくつかのケースでは、おそらく、301ステータスコードを返します。ステータスコード200を取得するには、下記のステータスコード200を取得してください:

var options = { 
    host: 'www.google.com', 
    port: 80, 
    path: '/', 
    method: 'GET' 
}; 

ホスト: 'www.google.com'ステータスコードは200です。 でも、 'www。'を削除した場合にのみ、host: 'stackoverflow.com'と表示されます。ステータスコード200を取得します。

誰でもこの問題が発生した場合は、「www。」の有無にかかわらず試してみるべきです。適切な結果を得る。