2014-05-04 7 views
8

Ich lerne node.js über die learnyounode Tutorials und bin bei der HTTP-COLLECT Übung fest. Ich möchte, dass mein Code ohne die Hilfe eines Drittanbieterprogramms funktioniert. Es funktioniert fast, aber aus irgendeinem Grund erhält es nicht den ersten Block von Daten von welcher Quelle auch immer erlernt wird, von der er ausgeht, also ist mein Code falsch. Dies ist mein Code so weit:Learnyounode http sammeln von einer

http = require("http"); 
var info = []; 

http.get(process.argv[2],function(res){ 
    res.setEncoding('utf8'); 
    res.on("data",function(input){ 
     info.push(input); 
    }); 
    res.on("error",console.error); 
    res.on("end",function(){ 
     console.log(info.join("")); 
    }); 
}); 

Und die Terminal-Ausgabe:

1. ACTUAL: "As busy as a fossicker mate built like a bluey. As dry as a sickie piece of piss mad as a beauty. As cunning as a trackies with get a dog up ya muster. Gutful of mate's rate piece of piss lets get some battler." 
1. EXPECTED: "402" 

2. ACTUAL: "We're going bottlo also come a holden. Grab us a bradman no dramas he hasn't got a ironman. She'll be right nipper no dramas she'll be right sheila. Mad as a pav also he hasn't got a barbie. " 
2. EXPECTED: "As busy as a fossicker mate built like a bluey. As dry as a sickie piece of piss mad as a beauty. As cunning as a trackies with get a dog up ya muster. Gutful of mate's rate piece of piss lets get some battler." 

3. ACTUAL: "" 
3. EXPECTED: "We're going bottlo also come a holden. Grab us a bradman no dramas he hasn't got a ironman. She'll be right nipper no dramas she'll be right sheila. Mad as a pav also he hasn't got a barbie. " 

4. ACTUAL: 
4. EXPECTED: "" 

I this Beitrag auf SO sah, aber es hat mir wirklich nicht helfen, da 1) Ich versuche http zu verwenden .get() wie in den Hinweisen der Übung angegeben und 2) mein Problem scheint nicht mit Proxy-Problemen zu tun zu haben. irgendwelche Hinweise/Hilfe würden geschätzt werden, ich bin nicht wirklich sicher, wie man den Code von hier repariert.

Antwort

5

D'oh ... Nachdem ich ein wenig mehr herum gestöbert habe, habe ich festgestellt, was falsch war: die erste Nummer waren keine Daten die ich vermisste, es war nur die Länge des empfangenen Textes in Zeichen. Es war eigentlich nichts falsch mit dem Programm selbst. Ich habe meinen Code korrigiert, indem ich console.log(info.join("").length); vor der console.log(info.join("")); Zeile hinzugefügt habe.

1

weil Sie nicht die Länge aller Zeichen vor dem Drucken der Zeichenfolge gedruckt haben. Ersetzen Sie die Anweisung in der ‚Ende‘ Veranstaltung von:

datas = info.join("") 
console.log(datas.length); 
console.log(datas); 
+0

Die korrekte Plural Daten, nicht Daten –

2

res.on("end",function(){ 
 
     console.log(info.join("")); 
 
    });

suchen Sie nicht weiter, die Fehler direkt in diesem Teil dort ist, Sie nicht gedruckt, die Länge der Schnur, wie verwiesen. Es gibt kein anderes Problem mit dem Code. Hier ist meine Lösung:

var http = require('http'); 
 
var result = '' 
 
var req = http.get(process.argv[2], (response)=>{ 
 
\t response.setEncoding('utf8'); 
 
\t response.on('data', (data)=>{ 
 
\t \t result+=data.toString(); 
 
\t }); 
 
\t response.on('error', (e)=>{ 
 
\t console.log(e); 
 
\t }); 
 
\t response.on('end',()=>{ 
 
\t \t console.log(result.length); 
 
\t \t console.log(result); 
 
\t \t result=''; 
 
\t }); 
 
});

-1
var http = require('http'); 
var bl = require('bl'); 

http.get(process.argv[2], function (response) { 

    response.pipe(bl(function (err, data) { 

    if (err) 
     return console.error(err); 
    data = data.toString(); 
    console.log(data.length); 
    console.log(data); 
    })); 

});