2013-07-02 6 views
5

Ich habe Stream und ich muss Stream-Inhalt in Zeichenfolge abrufen. Ich streame aus dem Internet mit http.get. Ich schreibe auch Strom in Datei, aber ich will nicht Datei schreiben und danach die gleiche Datei öffnen und lesen ... Also muss ich Strom in Zeichenfolge konvertieren Danke für alle Ratschläge ...Node.js - Wie in Zeichenfolge streamen

+0

Ihre Frage ist viel zu vage. Möchten Sie die eingehenden Daten in eine Zeichenfolge konvertieren oder auf Festplatte schreiben? Ein Beispielcode würde helfen. –

+2

möglich Duplikat von [Node.js-Stream in eine String-Variable schreiben] (http://stackoverflow.com/questions/10623798/writing-node-js-stream-into-a-string-variable) –

Antwort

1

Statt die zweite verschachtelte Funktion verwenden, versuchen sie die Methode toString() auf dem Stream. Dies kann dann weitergeleitet werden, wo immer Sie möchten, und Sie können auch eine through() -Methode schreiben, die es einer Variablen zuweisen oder direkt in der einen Funktion verwenden kann.

var http = require('http'); 

var string = ''; 
var request = http.get('http://www.google.cz', function (err, data){ 
    if (err) console.log(err); 
    string = data.toString(); 
    //any other code you may want 
}); 
//anything else 

Eine letzte Anmerkung - die http.get() Methode hat zwei Parameter: die URL, und einen Rückruf. Dies erfordert zwei Parameter, und Sie haben möglicherweise nichts erhalten, da es sich um eine leere Fehlermeldung handelte.

+2

Ich denke, das funktioniert nur hier, weil http.get einen erweiterten Stream zurückgibt, im Allgemeinen lesbaren Streams nicht habe eine toString-Methode, die auf diese Weise funktioniert. –

1

So

I have this: 
var centent = ''; 
var adress = "http://www.google.cz"; 
var request = http.get(adress.trim(), function(response) {  
     //I need to get content of http stream into variable content and after that continue   
} 

ich dachte, dass dies funktionieren wird, aber es funktioniert nicht

var http = require('http'); 

var string = ''; 
var request = http.get("http://www.google.cz", function(response) {  
    response.on('data', function(response){ 
     string += response; 

    }); 
    response.on('end', function(string){ 
     console.log(string); 
    }); 
    }); 
+0

Fügen Sie dies am Anfang hinzu 'response.setEncoding ('utf8');' – user568109

+0

Dies ist keine Antwort, es sollte zu Ihrer Frage hinzugefügt werden. – justrhysism

+1

Eine kleine Korrektur für den 'end'-Handler sollte die Handler-Funktion keinen Parameter haben sonst wird nur undefined gedruckt. Also, 'response.on ('end', function() { console.log (string); });' – mihaic

0
var http = require('http'); 

var string = ''; 
var request = http.get("http://www.google.cz", function(response) {  
    response.on('data', function(response){ 
     string += response.toString(); 

    }); 
    response.on('end', function(string){ 
     console.log(string); 
    }); 
    }); 

Dies funktioniert sicher. Ich benutze es.