2013-07-17 39 views
1

我剛剛安裝了Node.js,可能我錯過了一些東西,但是我嘗試了一個簡單的http.request並且只獲得了400個響應。我嘗試過幾次沒有運氣的主機。我從他們的網站安裝了Node,但這並不起作用,所以我通過Homebrew卸載並安裝了並獲得了「400」的相同輸出。我特別想知道是否有需要在我的Mac上進行更改以允許節點發送請求。繼續從Node.js中的HTTP.request獲取錯誤的請求

OSX 10.8.4 節點0.10.13 家釀0.9.4

var http = require("http"); 

var req = http.request({ 
    host: "http://google.com" 
}, function(res){ 
    if (res.statusCode === 200) console.log(res); 
    else console.log(res.statusCode); 
}); 

req.on("error", function(err){ 
    console.log(err); 
}); 

req.end(); 

我感謝所有幫助。謝謝!

回答

3

你的主機中的http://是令人困惑的事情。嘗試切換到「www.google.com」。這是一個http請求,不需要重複自己:)

+0

是的,就是這樣!一定是從一個不好的例子中得到的。非常感謝你! –

+0

@JoshR,如果它對您有幫助,您應該將其標記爲已接受的答案(通過點擊綠色複選標記)。 – Brad

1

您是否嘗試過使用host參數中的http://?我經常使用url這樣的工具。它會自動解析一個url到正確的部分傳遞給http.request

var url = require('url'), 
    link = url.parse('http://www.google.com/'); 

var req = http.request({ 
    host: link.hostname, 
    path: link.path, 
    port: link.port 
}, function(res){ 
    if (res.statusCode === 200) console.log(res); 
    else console.log(res.statusCode); 
}); 

此外,我會確保趕上錯誤事件,以防萬一是拋出一個錯誤。從文檔:

req.on('error', function(e) { 
    console.log('problem with request: ' + e.message); 
}); 

如果你只需要一個GET響應你也可以使用http.get代替。從文檔:

http.get("http://www.google.com/index.html", function(res) { 
    console.log("Got response: " + res.statusCode); 
}).on('error', function(e) { 
    console.log("Got error: " + e.message); 
}); 
+0

我遲到了,但'url'工具爲我節省了很多麻煩,儘管我已經知道刪除'http://'位。 – MappaGnosis

相關問題