2011-01-26 2 views
15

私はnode.jsを使用してWebページをダウンロードしています。しかし、それはデータのチャンクを受信して​​いません:node.jsの使用HTTPリモートクライアントリクエストでボディが返されない

console.log('preparing request to ' + url) 
    u = require('url').parse(url) 
    var remote_client = http.createClient(80, u['host']); 
    var request = remote_client.request("GET", u['pathname'], {"host": u['host']}); 
    console.log("request made") 

    request.addListener('response', function (response) { 
     response.setEncoding('binary') 
     var body = ''; 

     response.addListener('data', function (chunk) { 
      body += chunk; 
      console.log('chunk received') 
     }); 
    }); 

最後のコンソールメッセージは "要求が行われました"です。 「チャンク受信」などのコンソールメッセージはありません。思考?

+1

() – generalhenry

+0

あなたもちょうど)(http.getの使用に切り替えることができhttp://nodejs.org/docs/v0.3.6/api/http.html#http.get – generalhenry

+0

うん、あなたはrequest.end()を忘れていますが、私はこの普通のライブラリの周りにラッパーを使います。 https://github.com/ry/node/wiki/modules =>例えば[request](http://github.com/mikeal/node-utils/tree/master/request/)、[node-wwwdude ](http://github.com/pfleidi/node-wwwdude)を参照してください。 – Alfred

答えて

12

これは常に私のために働いた例です。

var sys = require('sys'), 
    http = require('http'); 

var connection = http.createClient(8080, 'localhost'), 
    request = connection.request('/'); 

connection.addListener('error', function(connectionException){ 
    sys.log(connectionException); 
}); 

request.addListener('response', function(response){ 
    var data = ''; 

    response.addListener('data', function(chunk){ 
     data += chunk; 
    }); 
    response.addListener('end', function(){ 
     // Do something with data. 
    }); 
}); 

request.end(); 
+0

非難されたhttp.createClient 0.10から – Advanced

1

あなたはそれを送信する準備ができていることを知らせるための要求に終わりを()を呼び出す必要があります。また、リクエストにユーザーエージェントヘッダーを追加する必要があります。多くのWebサーバーはそれを探します。

あなたがrequest.endを忘れてしまった
console.log('preparing request to ' + url) 
u = require('url').parse(url) 
var remote_client = http.createClient(80, u['host']); 
var request = remote_client.request("GET", u['pathname'], {"host": u['host'], 
                  "user-agent": "node.js"}); 
console.log("request made") 

request.addListener('response', function (response) { 
    response.setEncoding('binary') 
    var body = ''; 

    response.addListener('data', function (chunk) { 
     body += chunk; 
     console.log('chunk received') 
    }); 
}); 

request.end(); 
関連する問題