当前位置:首页 > 软件开发学习 > PHP学习 > 正文内容

php发送get、post请求的几种方法

admin6年前 (2015-01-06)PHP学习1004

  php发送get、post请求的几种方法

  方法1: 用file_get_contents 以get方式获取内容

  [php] view plaincopyprint?

  1.   <?php

  2.   $url='http://www.domain.com/';

  3.   $html = file_get_contents($url);

  4.   echo $html;

  5.   ?>

  方法2: 用fopen打开url, 以get方式获取内容

  [php] view plaincopyprint?

  1.   <?php

  2.   $fp = fopen($url, 'r');

  3.   //返回请求流信息(数组:请求状态,阻塞,返回值是否为空,返回值http头等)

  [php] view plaincopyprint?

  1.   stream_get_meta_data($fp);

  [php] view plaincopyprint?

  1.   while(!feof($fp)) {

  2.   $result .= fgets($fp, 1024);

  3.   }

  4.   echo "url body: $result";

  5.   fclose($fp);

  6.   ?>


  方法3:用file_get_contents函数,以post方式获取url


  [php] view plaincopyprint?


  1.   <?php

  2.   $data = array ('foo' => 'bar');

  [php] view plaincopyprint?

  1.   //生成url-encode后的请求字符串,将数组转换为字符串

  2.   $data = http_build_query($data);

  3.   $opts = array (

  4.   <span style="white-space:pre"> </span>'http' => array (

  5.   <span style="white-space:pre"> </span>'method' => 'POST',

  6.   <span style="white-space:pre"> </span>'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .

  7.   <span style="white-space:pre"> </span>"Content-Length: " . strlen($data) . "\r\n",

  8.   <span style="white-space:pre"> </span>'content' => $data

  9.   <span style="white-space:pre"> </span>)

  10.   );

  [php] view plaincopyprint?

  1.   //生成请求的句柄文件

  2.   $context = stream_context_create($opts);

  3.   $html = file_get_contents('http://localhost/e/admin/test.html', false, $context);

  4.   echo $html;

  5.   ?>

  方法4:用fsockopen函数打开url,以get方式获取完整的数据,包括header和body,fsockopen需要 PHP.ini 中 allow_url_fopen 选项开启

  [php] view plaincopyprint?



  1.   <?php

  2.   function get_url ($url,$cookie=false)

  3.   {

  4.   $url = parse_url($url);

  5.   $query = $url[path]."?".$url[query];

  6.   echo "Query:".$query;

  7.   $fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);

  8.   if (!$fp) {

  9.   return false;

  10.   } else {

  11.   $request = "GET $query HTTP/1.1\r\n";

  12.   $request .= "Host: $url[host]\r\n";

  13.   $request .= "Connection: Close\r\n";

  14.   if($cookie) $request.="Cookie: $cookie\n";

  15.   $request.="\r\n";

  16.   fwrite($fp,$request);

  17.   while()) {

  18.   $result .= @fgets($fp, 1024);

  19.   }

  20.   fclose($fp);

  21.   return $result;

  22.   }

  23.   }

  24.   //获取url的html部分,去掉header

  25.   function GetUrlHTML($url,$cookie=false)

  26.   {

  27.   $rowdata = get_url($url,$cookie);

  28.   if($rowdata)

  29.   {

  30.   $body= stristr($rowdata,"\r\n\r\n");

  31.   $body=substr($body,4,strlen($body));

  32.   return $body;

  33.   }

  34.   return false;

  35.   }

  36.   ?>


  方法5:用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body


  [php] view plaincopyprint?

  1.   <?php

  2.   function HTTP_Post($URL,$data,$cookie, $referrer="")

  3.   {

  4.   // parsing the given URL

  5.   $URL_Info=parse_url($URL);

  6.   // Building referrer

  7.   if($referrer=="") // if not given use this script as referrer

  8.   $referrer="111";

  9.   // making string from $data

  10.   foreach($data as $key=>$value)

  11.   $values[]="$key=".urlencode($value);

  12.   $data_string=implode("&",$values);

  13.   // Find out which port is needed - if not given use standard (=80)

  14.   if(!isset($URL_Info["port"]))

  15.   $URL_Info["port"]=80;

  16.   // building POST-request:

  17.   $request.="POST ".$URL_Info["path"]." HTTP/1.1\n";

  18.   $request.="Host: ".$URL_Info["host"]."\n";

  19.   $request.="Referer: $referer\n";

  20.   $request.="Content-type: application/x-www-form-urlencoded\n";

  21.   $request.="Content-length: ".strlen($data_string)."\n";

  22.   $request.="Connection: close\n";

  23.   $request.="Cookie: $cookie\n";

  24.   $request.="\n";

  25.   $request.=$data_string."\n";

  26.   $fp = fsockopen($URL_Info["host"],$URL_Info["port"]);

  27.   fputs($fp, $request);

  28.   while(!feof($fp)) {

  29.   $result .= fgets($fp, 1024);

  30.   }

  31.   fclose($fp);

  32.   return $result;

  33.   }

  34.   ?>

  


方法6:使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展



  [php] view plaincopyprint?

  1.   <?php

  2.   $ch = curl_init();

  3.   $timeout = 5;

  4.   curl_setopt ($ch, CURLOPT_URL, 'http://www.domain.com/');

  5.   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

  6.   curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

  7.   $file_contents = curl_exec($ch);

  8.   curl_close($ch);

  9.   echo $file_contents;


扫描二维码推送至手机访问。

版权声明:本文由学无止境-开拓创新-ipvb学习网发布,如需转载请注明出处。

标签: phpgetput
分享给朋友:

相关文章

php过滤危险html代码

用PHP过滤html里可能被利用来引入外部危险内容的代码。有些时候,需要让用户提交html内容,以便丰富用户发布的信息,当然,有些可能造成显示页面布局混乱的代码也在过滤范围内。以下是引用片段:#用户发...

PHP header() 函数

  PHP header() 函数  PHP HTTP 函数  定义和用法  header() 函数向客户端发送原始的 HTTP 报头。  认识到一点很重要,即必须在任何实际的输出被发送之前调用 he...

php的header来定义一个php页面为utf编码或GBK编码

  php的header来定义一个php页面为utf编码或GBK编码  php页面为utf编码  header("Content-type: text/html; charset=utf-8...

php的session优化

php的session优化

这个问题很多做php开发朋友应该都有遇到过,一个启用了session_start 页面,由于执行时间过长。导致通一个用户访问,另外一个很简单的启用session_start页面一直阻塞着。 直到第一个...

计算并输出1000000次字符串比较和数字比较的耗时

//9.代码:计算并输出1000000次字符串比较和数字比较的耗时。 $str1="123"; $str2="145"; $a=microtime(tru...

PHP语言的优势?

 随着移动互联网的兴起,互联网行业正向更加智能化的Web3.0时代迈进,中国互联网 行业进入了高速发展的势态,PHP语言已经为大部分企业广泛应用和重视(如:新浪、百度、腾讯、TOM、淘宝、搜...