var http = require('http');
var options = {
method: 'GET',
host: 'www.google.com',
port: 80,
path: '/index.html'
};
http.request(
options,
function(err, resBody){
console.log("hey");
console.log(resBody);
if (err) {
console.log("YOYO");
return;
}
}
);
出于某种原因,这只会超时并且不会将任何内容记录到控制台。
我知道我可以require('request')
但我需要使用http
与我正在使用的插件兼容。
此外,我的版本背景:节点是 v0.8.2
答案 0 :(得分:3)
您准备了一个请求对象,但没有用.end()激活它。 (此外回调也不起作用。)
答案 1 :(得分:3)
使用此处的示例:http://nodejs.org/api/http.html#http_http_request_options_callback
var options = {
hostname: 'www.google.com',
port: 80,
path: '/upload',
method: 'POST'
};
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write('data\n');
req.write('data\n');
req.end();
回调没有错误参数,你应该使用on(“error”,...) 并且在您致电end()
之前,您的请求不会被发送答案 2 :(得分:0)
在这里结识:
hostname
而不是host
,以便与url.parse()
(see here)http.ClientResponse
req.on('error', ...)
http.request
时,您需要在完成req.end()
后结束请求,这样您就可以在结束请求之前编写您需要的任何正文(使用req.write()
)
http.get()
会在幕后为您执行此操作,这可能就是您忘记的原因。工作代码:
var http = require('http');
var options = {
method: 'GET',
hostname: 'www.google.com',
port: 80,
path: '/index.html'
};
var req = http.request(
options,
function(res){
console.log("hey");
console.log(res);
}
);
req.on('error', function(err) {
console.log('problem', err);
});
req.end();