2014-08-29 7 views
5

Sto cercando di ottenere pagina html attraverso questo modulo nodo denominato WreckLeggi oggetto buffer in node.js

Dovrebbe essere molto facile da ottenere dati, ma non riesco a farli

'use strict'; 

var Wreck = require('wreck'); 

var url = 'http://www.google.it'; 

var callback = function(err, response, payload){ 
    Wreck.read(response, null, function(err, body){ 
     //here print out the html page 
    }); 
}; 

Wreck.get(url, callback); 

Qui sopra un semplice script solo una copia dal readme dello sviluppatore. secondo la documentazione body dovrebbe restituire un oggetto buffer ma come posso leggere all'interno di un oggetto body? Ho letto di usare toJSON o toString() ma non ottenere alcun risultato

+1

ci mostri quello codice esatto che hai fatto uso nel 'read' callback e cosa ha stampato? Si è verificato un errore? – Bergi

risposta

5

... ma io non ottenere alcun risultato

si stanno ottenendo un risultato, un vuoto Buffer , ma non è quello che vuoi, probabilmente.

Il fatto è: si sta utilizzando il metodo read errato, passandolo all'interno di un callback al metodo get. I metodi get, post, put e delete chiamano già read internaly e restituiscono il leggibile Buffer per te, in un callback. Date un'occhiata al getdoc:

get (uri, [opzioni], callback)

Metodo pratico per le operazioni di GET.

  • uri - L'URI della risorsa richiesta.
  • opzioni - Oggetto di configurazione facoltativo contenente impostazioni per le operazioni di richiesta e di lettura.
  • callback - La funzione di callback utilizzando la funzione di firma (err, risposta, payload) dove:
    • err - Qualsiasi errore che possono essersi verificati durante la manipolazione della richiesta.
    • risposta: l'oggetto messaggio in entrata HTTP, che è anche un flusso leggibile.
    • payload - Il payload sotto forma di buffer o (facoltativamente) oggetto JavaScript analizzato (JSON).

Quindi, l'uso del metodo get è piuttosto semplice (utilizzando il proprio esempio):

var callback = function(err, response, payload){ 
    console.log(payload.toString()); // converting the buffer to a string and logging 
}; 

Wreck.get(url, callback);