2013-07-17 2 views
1

방금 ​​Node.js를 설치했는데 뭔가 빠졌지 만 간단한 http.request를 시도하고 400 개의 응답 만받습니다. 나는 운이없는 몇몇 주인을 시도했다. 사이트에서 Node를 설치했는데 작동하지 않으므로 Homebrew를 통해 설치 제거하고 "400"과 동일한 결과를 얻었습니다. 노드가 요청을 보낼 수 있도록 Mac에서 변경해야 할 것이 있는지 구체적으로 궁금해합니다.Node.js의 HTTP.request에서 계속 잘못된 요청 받기

OSX 10.8.4 노드는 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(); 

0.10.13 브루 난 어떤 도움을 주셔서 감사합니다. 감사!

답변

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); 
}); 

또한 오류가 발생하는 경우에도 오류 이벤트를 포착해야합니다. 워드 프로세서에서 : 당신은 단지 GET 응답을해야하는 경우

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

당신은 대신 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

관련 문제