当前位置:首页 > PHP教程 > php应用 > 列表

php发送get、post请求的6种方法简明总结

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-14 14:12:58 浏览: 评论:0 

这篇文章主要介绍了php发送get、post请求的6种方法简明总结,分别为使用file_get_contents 、fopen、fsockopen、curl来发送GET和POST请求,需要的朋友可以参考下

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

  1. <?php 
  2. $url='https://www.phpfensi.com/'
  3. $html = file_get_contents($url); 
  4. echo $html
  5. ?> 

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

  1. <?php 
  2. $fp = fopen($url, ‘r'); 
  3. stream_get_meta_data($fp); 
  4. while(!feof($fp)) { 
  5. $result .= fgets($fp, 1024); 
  6. echo “url body: $result”; 
  7. fclose($fp); 
  8. ?> 

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

  1. <?php 
  2. $data = array (‘foo' => ‘bar'); 
  3. $data = http_build_query($data); 
  4.  
  5. $opts = array ( 
  6. ‘http' => array ( 
  7. ‘method' => ‘POST'
  8. ‘header'=> “Content-type: application/x-www-form-urlencodedrn” . 
  9. “Content-Length: ” . strlen($data) . “rn”, 
  10. ‘content' => $data 
  11. ); 
  12.  
  13. $context = stream_context_create($opts); 
  14. $html = file_get_contents(‘http://localhost/e/admin/test.html', false, $context); 
  15.  
  16. echo $html
  17. ?> 

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

  1. <?php 
  2. function get_url ($url,$cookie=false) 
  3. $url = parse_url($url); 
  4. $query = $url[path].”?”.$url[query]; 
  5. echo “Query:”.$query
  6. $fp = fsockopen$url[host], $url[port]?$url[port]:80 , $errno$errstr, 30); 
  7. if (!$fp) { 
  8. return false; 
  9. else { 
  10. $request = “GET $query HTTP/1.1rn”; 
  11. $request .= “Host: $url[host]rn”; 
  12. $request .= “Connection: Closern”; 
  13. if($cookie$request.=”Cookie:  $cookien”; 
  14. $request.=”rn”; 
  15. fwrite($fp,$request); 
  16. while(!@feof($fp)) { 
  17. $result .= @fgets($fp, 1024); 
  18. fclose($fp); 
  19. return $result
  20. //获取url的html部分,去掉header 
  21. function GetUrlHTML($url,$cookie=false) 
  22. $rowdata = get_url($url,$cookie); 
  23. if($rowdata
  24. $bodystristr($rowdata,”rnrn”); 
  25. $body=substr($body,4,strlen($body)); 
  26. return $body
  27.  
  28. return false; 
  29. ?> 

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

  1. <?php 
  2. function HTTP_Post($URL,$data,$cookie$referrer=”") 
  3.  
  4. // parsing the given URL 
  5. $URL_Info=parse_url($URL); 
  6.  
  7. // Building referrer 
  8. if($referrer==”") // if not given use this script as referrer 
  9. $referrer=”111″; 
  10.  
  11. // making string from $data 
  12. foreach($data as $key=>$value
  13. $values[]=”$key=”.urlencode($value); 
  14. $data_string=implode(“&”,$values); 
  15.  
  16. // Find out which port is needed – if not given use standard (=80) 
  17. if(!isset($URL_Info["port"])) 
  18. $URL_Info["port"]=80; 
  19.  
  20. // building POST-request: 
  21. $request.=”POST “.$URL_Info["path"].” HTTP/1.1n”; 
  22. $request.=”Host: “.$URL_Info["host"].”n”; 
  23. $request.=”Referer: $referern”; 
  24. $request.=”Content-type: application/x-www-form-urlencodedn”; 
  25. $request.=”Content-length: “.strlen($data_string).”n”; 
  26. $request.=”Connection: closen”; 
  27.  
  28. $request.=”Cookie:  $cookien”; 
  29.  
  30. $request.=”n”; 
  31. $request.=$data_string.”n”; 
  32.  
  33. $fp = fsockopen($URL_Info["host"],$URL_Info["port"]); 
  34. fputs($fp$request); 
  35. while(!feof($fp)) { 
  36. $result .= fgets($fp, 1024); 
  37. fclose($fp); 
  38.  
  39. return $result
  40.  
  41. ?> 

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

  1. <?php 
  2. $ch = curl_init(); 
  3. $timeout = 5; 
  4. curl_setopt ($ch, CURLOPT_URL, ‘https://www.jb51.net/'); 
  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.  
  10. echo $file_contents
  11. ?> 

Tags: php发送get post请求

分享到: