note 71532 added to function.fsockopen

From: Date: Mon, 04 Dec 2006 16:34:58 +0000
Subject: note 71532 added to function.fsockopen
Groups: php.notes 
Request: Send a blank email to php-notes+get-120273@lists.php.net to get a copy of this message
I've had issues with some of the handlers for chunked http 1.1 responses. Here's a method that worked for me, if it works for you as well, then cheers :P <?php function httpSocketConnection($host, $method, $path, $data) { $method = strtoupper($method); if ($method == "GET") { $path.= '?'.$data; } $filePointer = fsockopen($host, 80, $errorNumber, $errorString); if (!$filePointer) { logEvent('debug', 'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n'); return false; } $requestHeader = $method." ".$path." HTTP/1.1\r\n"; $requestHeader.= "Host: ".$host."\r\n"; $requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n"; $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n"; if ($method == "POST") { $requestHeader.= "Content-Length: ".strlen($data)."\r\n"; } $requestHeader.= "Connection: close\r\n\r\n"; if ($method == "POST") { $requestHeader.= $data; } fwrite($filePointer, $requestHeader); $responseHeader = ''; $responseContent = ''; do { $responseHeader.= fread($filePointer, 1); } while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader)); if (!strstr($responseHeader, "Transfer-Encoding: chunked")) { while (!feof($filePointer)) { $responseContent.= fgets($filePointer, 128); } } else { while ($chunk_length = hexdec(fgets($filePointer))) { $responseContentChunk = ''; logEventToTextFile('debug', $chunk_length); $read_length = 0; while ($read_length < $chunk_length) { $responseContentChunk .= fread($filePointer, $chunk_length - $read_length); $read_length = strlen($responseContentChunk); } $responseContent.= $responseContentChunk; fgets($filePointer); } } logEventToTextFile('debug', $responseContent); return chop($responseContent); } ?> ---- Server IP: 66.163.161.117 Probable Submitter: 74.109.89.230 ---- Manual Page -- http://www.php.net/manual/en/function.fsockopen.php Edit -- https://master.php.net/note/edit/71532 Del: integrated -- https://master.php.net/note/delete/71532/integrated Del: useless -- https://master.php.net/note/delete/71532/useless Del: bad code -- https://master.php.net/note/delete/71532/bad+code Del: spam -- https://master.php.net/note/delete/71532/spam Del: non-english -- https://master.php.net/note/delete/71532/non-english Del: in docs -- https://master.php.net/note/delete/71532/in+docs Del: other reasons-- https://master.php.net/note/delete/71532 Reject -- https://master.php.net/note/reject/71532 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#120273) next »