Mi rispondo da solo dopo un lungo studio del protocollo http sperando di essere utile a qualcuno che si ritrovo lo stesso problema.
I caratteri strani non sono altro che il numero dei caratteri successivi nel caso si tratti di una risposta
che ha nell'headerPer decodificarla bisogna leggere la prima linea trasformare il codice esadecimale in intero leggereCodice PHP:Transfer-Encoding: chunked
il numero di caratteri successivi metterli nella risposta poi aspettarti un altra linea che identifica i caratteri successivi e cosi via fino a quando il numero di caratteri successivi diventa 0.
Ho analizzato lo Zend Framework per vedere come faceva ecco il metodo
comunque senza stare troppo a sbattersi si può utilizzare questa classe che può essere istanziataCodice PHP:/**
* @category Zend
* @package Zend_Http
* @subpackage Response
* @version $Id: Response.php 8064 2008-02-16 10:58:39Z thomas $
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. ([url]http://www.zend.com[/url])
* @license [url]http://framework.zend.com/license/new-bsd[/url] New BSD License
**/
/**
* Decode a "chunked" transfer-encoded body and return the decoded text
*
* @param string $body
* @return string
*/
public static function decodeChunkedBody($body)
{
$decBody = '';
while (trim($body)) {
if (! preg_match("/^([\da-fA-F]+)[^\r\n]*\r\n/sm", $body, $m)) {
require_once 'Zend/Http/Exception.php';
throw new Zend_Http_Exception("Error parsing body - doesn't seem to be a chunked message");
}
$length = hexdec(trim($m[1]));
$cut = strlen($m[0]);
$decBody .= substr($body, $cut, $length);
$body = substr($body, $cut + $length + 2);
}
return $decBody;
}
passandogli la stringa in blocco della risposta http .

Rispondi quotando