首页 > 编程 > PHP > 正文

简述php实现httpRequest的方法

2020-03-22 16:53:49
字体:
来源:转载
供稿:网友
这篇文章主要介绍了php实现httpRequest的方法,涉及php操作http的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了php实现httpRequest的方法。具体如下:

想从学校图书馆的网站上抓取数据处理之后在返回给浏览器,试了不少方法。首先试了http_request(),但是这个学院pecl_http支持,后来又试了网上流传甚广的html' target='_blank'>class HttpRequest,可能是我不会使用,也失败了。后来看到了函数httpRequest($url, $post= , $method= GET , $limit=0, $returnHeader=FALSE, $cookie= , $bysocket=FALSE, $ip= , $timeout=15, $block=TRUE),用它成功了,因此贴出来分享一下。函数代码如下:

代码如下:

 ?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  fclose($fp);  return $returnHeader ? array($header,$content) : $content; ? 

调用也很简单的。简单的例子:

代码如下:

echo httpRequest( http://www.baidu.com 

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

PHP自动生成表单的方法

php操作MySQL数据库的方法

php针对服务器端预定义变量$_SERVER的方法

以上就是简述php实现httpRequest的方法的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表