Hallo!
Es ist wieder etwas voran gegangen und die Klasse ist fast fertig. Es bleibt allerdings der Fehler mit dem verqueren Content zu lösen. Doch auch dort hat sich etwas getan. es liegt wohl am Transfere-Encoding. Dies ist in dieser Übertragung chunked. Wer nicht weiß, was das ist und nicht gerade im RFC suchen will, dem sei gesagt, dass das Transfere-Encoding chunked bei der Übertragung von Daten verwendet wird, deren Länge am Anfang der Server-Antwort noch nicht absehbar ist. Zum Glück ist die Decodierung relativ einfach. Zudem wurde ich sogar auf einen allgemeinen
Algorithmus aufmerksam gemacht, der die Decodierung eigentlich schon erklärt. Deshalb dachte ich mir, dass ich dann doch einfach eine weitere Methode in meine Klasse einbinde, die eben diese Decodierung vornimmt. das ganze sieht bisher so aus:
- Code: Alles auswählen
/**
* decodeChunked() - Decodes Content in chunked encoding
*
* @access: private
* @param Arr $chunked
* @return Array
*/
private function decodeChunked( $chunked )
{
$length = 0;
$body = '';
read chunk-size | chunk-extension (if any) and CRLF /([a-fA-F0-9_]+)(|(.+))\x0D\x0A/
while (chunk-size > 0)
{
$chunk = read chunk-data and CRLF; /(.+)\x0D\x0A/
$body .= $chunk;
$length = $length + $chunkSize;
read chunk-size and CRLF /([a-fA-F0-9_]+)\x0D\x0A/
}
// das habe ich noch nicht verstanden
// muss ich mich nochmal genauer einlesen
read entity-header
while (entity-header not empty)
{
append entity-header to existing header fields
read entity-header
}
// set right Content-Length
$chunked['HEADER_FIELDS']['Content-Length'] = $length;
// change Transfere-Encoding
$chunked['HEADER_FIELDS']['Transfer-Encoding'] = 'token';
return $chunked;
}
Wie ihr seht habe ich mich an der PHP-Form dieses Algorithmus schon versucht, bin allerdings nicht ganz fertig geworden. Und zwar bin ich mir nicht sicher, ob die RegExp, die ich da verfasst habe, auch wirklich stimmen. Des weiteren weiß ich leider nicht wirklich von welchen entity-headern da die Rede ist, aber das bekomme ich bestimmt noch raus. Wäre nett, wenn mir da mal jemand helfen könnte.
MfG, Andy
//EDIT: Ich befürchte alles was ich hier geschrieben und gefragt habe ist Bullshit. Nicht alles ist Bullshit, aber ich brauche keine RegExp, da man die Chunked-Codierung wohl leichter Sequenziell dekodiert.