2010-03-06 11 views
6

Sto tentando di utilizzare PHP e cURL per accedere a un sito Web (ovvero Craigslist). Quando accedo allo script, viene visualizzato questo messaggio di avviso:Perché viene visualizzato questo avviso: "Problema ricevuto 2 nel parser chunky"?

Received problem 2 in the chunky parser 

Le ricerche hanno dimostrato che non si tratta di un problema associato a cURL. Non riesco a trovare la fonte del problema. Quale potrebbe essere la ragione?

Grazie.

+1

non può fare a me stesso: Mettere il parser a dieta. – Erik

+0

@Erik era quello che stavo pensando prima anch'io. C'è un numero di parser e uno di questi è un po 'pesante. Il messaggio di errore usa questo fatto per identificarlo - molto più bello di "Parser 28" –

risposta

5

Aggiornamento: Googling per il messaggio di errore, trovo anche this: messaggio di errore

Il grosso-parser si verifica quando ricciolo si aspetta un corpo risposta HTTP Chunked e poi non ottenere uno. La tua risposta invia l'intestazione Transfer-Encoding: chunked, quindi arricciarsi si aspetta di vedere un corpo suddiviso in pezzi secondo RFC2616 e non ne ottiene uno.

Ovviamente, un reindirizzamento non deve avere un corpo di risposta o anche l'intestazione Transfer-Encoding per iniziare. Potresti provare a sovrascrivere l'intestazione, ma forse CouchDB lo inserisce in modo incondizionato, nel qual caso dovremmo risolvere il problema, se scopri che non puoi ignorare l'intestazione Transfer-Encoding, puoi presentare un bug report?

Non ho idea di cosa fare nel contesto del recupero di una pagina arbitraria, però.

Original post:

C'è una CouchDB Bug report che fare con lo stesso problema, unitamente ai dati multi-byte. Craigslist sembra funzionare in ISO-8859-1, forse l'annuncio (o qualunque cosa tu stia recuperando) ha caratteri UTF-8 in esso?

+0

Ho impostato 'Content-type: text/html; charset = utf-8' e sta funzionando bene. Grazie per il suggerimento. – Circuits

+0

puoi anche fare easy.version = Curl :: HTTP_1_0 – Clark

1

"Il problema ricevuto 2 nel parser pesante" è un messaggio di errore da libcurl. Il "problema 2" specifico si riferisce a CHUNKE_ILLEGAL_HEX, che è un codice di errore interno che identifica un flusso codificato in blocchi non valido.

Più o meno quello che la risposta di Pekka già detto ...

Problemi correlati