Home >Backend Development >PHP Tutorial >Briefly describe the method of implementing httpRequest in php
This article mainly introduces the method of php implementing httpRequest, involving the skills of php operating http, and has certain reference value. Friends in need can refer to it
The example of this article describes the method of php implementing httpRequest. The details are as follows:
I want to grab the data from the school library website and process it before returning it to the browser. I have tried many methods. First I tried http_request(), but this college supports pecl_http. Then I tried class HttpRequest which is widely circulated on the Internet. Maybe I don’t know how to use it, and it failed. Later I saw the function httpRequest($url, $post='', $method='GET', $limit=0, $returnHeader=FALSE, $cookie='', $bysocket=FALSE, $ip='', $ timeout=15, $block=TRUE), I used it successfully, so I posted it to share. The function code is as follows:
The code is as follows:
<?php /** * Respose A Http Request * * @param string $url * @param array $post * @param string $method * @param bool $returnHeader * @param string $cookie * @param bool $bysocket * @param string $ip * @param integer $timeout * @param bool $block * @return string Response */ function httpRequest($url,$post='',$method='GET',$limit=0,$returnHeader=FALSE,$cookie='',$bysocket=FALSE,$ip='',$timeout=15,$block=TRUE) { $return = ''; $matches = parse_url($url); !isset($matches['host']) && $matches['host'] = ''; !isset($matches['path']) && $matches['path'] = ''; !isset($matches['query']) && $matches['query'] = ''; !isset($matches['port']) && $matches['port'] = ''; $host = $matches['host']; $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/'; $port = !empty($matches['port']) ? $matches['port'] : 80; if(strtolower($method) == 'post') { $post = (is_array($post) and !empty($post)) ? http_build_query($post) : $post; $out = "POST $path HTTP/1.0\r\n"; $out .= "Accept: */*\r\n"; //$out .= "Referer: $boardurl\r\n"; $out .= "Accept-Language: zh-cn\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; $out .= "Host: $host\r\n"; $out .= 'Content-Length: '.strlen($post)."\r\n"; $out .= "Connection: Close\r\n"; $out .= "Cache-Control: no-cache\r\n"; $out .= "Cookie: $cookie\r\n\r\n"; $out .= $post; } else { $out = "GET $path HTTP/1.0\r\n"; $out .= "Accept: */*\r\n"; //$out .= "Referer: $boardurl\r\n"; $out .= "Accept-Language: zh-cn\r\n"; $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; $out .= "Host: $host\r\n"; $out .= "Connection: Close\r\n"; $out .= "Cookie: $cookie\r\n\r\n"; } $fp = fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout); if(!$fp) return ''; else { $header = $content = ''; stream_set_blocking($fp, $block); stream_set_timeout($fp, $timeout); fwrite($fp, $out); $status = stream_get_meta_data($fp); if(!$status['timed_out']) {//未超时 while (!feof($fp)) { $header .= $h = fgets($fp); if($h && ($h == "\r\n" || $h == "\n")) break; } $stop = false; while(!feof($fp) && !$stop) { $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit)); $content .= $data; if($limit) { $limit -= strlen($data); $stop = $limit <= 0; } } } fclose($fp); return $returnHeader ? array($header,$content) : $content; } } ?>
The call is also very simple. Simple example:
The code is as follows:
echo httpRequest('http://www.baidu.com');
Summary: The above is the entire content of this article, I hope it will be helpful to everyone's learning.
Related recommendations:
How to automatically generate forms with PHP
How to operate MySQL database with PHP
php method for server-side predefined variable $_SERVER
The above is the detailed content of Briefly describe the method of implementing httpRequest in php. For more information, please follow other related articles on the PHP Chinese website!