我发现了数百个使用带有http或https的node.js来发出GET,POST请求的例子。似乎很容易。
我创建了一个返回对象的模块。在那个对象中,我有一个名为
的函数我在restlet模块中的功能:
restlet.makecall = function call() {
console.log("This gets logged");
http.get('http://www.google.com/', function(res) {
console.log("statusCode: ", res.statusCode); //nothing
console.log("headers: ", res.headers); //nothing
res.on('data', function(d) {
process.stdout.write(d);
console.log("This doesn't get logged out"); //nothing
});
}).on('error', function(e) {
console.error(e);
console.log("This doesn't get logged out");
});
console.log("This gets logged");
};
我的问题是,每次运行它,或者我在所有帖子中找到的任何代码变体,NOTHING都会被注销到控制台......
我确信这个问题很简单,但我还没弄清楚。我真的很感激,如果有人能指出我正确的方向,甚至是一些我可以粘贴到实际记录出来的功能的代码。 (错误,什么!)
答案 0 :(得分:1)
我认为你的网络存在问题,你的http.get回调没有被调用。我会尝试ping www.google.com - 我怀疑它不起作用。检查您的DNS?
我将代码复制到一个.js文件中,并运行它,如下所示。
var http = require('http');
function call() {
console.log("This gets logged");
http.get('http://www.google.com/', function(res) {
console.log("statusCode: ", res.statusCode); //nothing
console.log("headers: ", res.headers); //nothing
res.on('data', function(d) {
process.stdout.write(d);
console.log("This doesn't get logged out"); //nothing
});
}).on('error', function(e) {
console.error(e);
console.log("This doesn't get logged out");
});
console.log("This gets logged");
};
call();
我运行代码没有问题,这是下面的输出。
This gets logged
This gets logged
statusCode: 302
headers: { 'cache-control': 'private',
'content-type': 'text/html; charset=UTF-8',
location: 'http://www.google.com.au/?gfe_rd=cr&ei=Mpx2VfmnF6nu8wfUioDQBQ',
'content-length': '262',
date: 'Tue, 09 Jun 2015 07:56:34 GMT',
server: 'GFE/2.0',
'alternate-protocol': '80:quic,p=0',
connection: 'close' }
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.au/? gfe_rd=cr&ei=Mpx2VfmnF6nu8wfUioDQBQ">here</A>.
</BODY></HTML>
This doesn't get logged out