2013-03-25 40 views
1

這可能會因運行在railwayjs控制器內部而變得複雜(還沒有移動到複合),不要這麼認爲,不要認爲這裏有任何東西鐵路干擾。node.js http.get chunk沒有正確返回結構

我有以下幾點:

var http = require('follow-redirects').http; 
var https = require('follow-redirects').https; 
action('index', function (req,res) { 
    var url = decodeURIComponent(request.query.url); 
    var resobj; 
    var stat; 
    var headers; 
    http.get(url, function (r) { 
     stat = r.statusCode; 
     headers = r.headers; 
    r.on('data', function (chunk) { 
      resobj += chunk.toString(); 
     }); 
     r.on('end', responder); 
    }); 
    function responder(){ 
    response.writeHead(200, { 
      'Content-Type': headers["content-type"] 
     }) 
     response.write(resobj); 
     response.end(); 
    } 

}); 

request.query.url是鐵路,也可能來自快遞底層,無論如何它正確返回。然而,每當我在各種網站運行此我有兩個問題

  1. 未定義的文本出來之前別的,例如文檔類型聲明之前。

  2. 塊的結構似乎是關閉的,導致瀏覽器修復html(可能是由'undefined'字符串引起的),這種修復意味着元素通常在頭部呈現時最終呈現在主體中,

有關解決這個任何想法 - 也如果有人能告訴我該怎麼做上面的代碼,以便與節點之一phantomjs橋樑這將是很好,我可以得到至少一樣好結果。

+0

我應該指定該不確定是不是在我已經測試過的網頁的第一塊發現的最簡單的方法。那些我測試過的是www.metafilter.com,www.google.com,www.cnn.com,www.balloon-juice.com – user254694 2013-03-25 19:13:20

回答

0

這個問題是大約一歲,但我登陸它試圖解決類似的問題。節點在流中處理這些響應以保持其足跡低。要求節點緩衝它們並試圖連接卡盤比完成工作要多得多。我發現,使用mikeal的請求包是處理響應「身體」 https://github.com/mikeal/request

var request = require('request'); 
request('http://www.google.com', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log(body) // Print the google web page. 
    } 
})