PHP發送get、post請求的6種方法簡明總結
方法1: 用file_get_contents 以get方式獲取內容:
<?php$url=http://www.jb51.net/;$html = file\_get\_contents($url);echo $html;?>
方法2: 用fopen打開url, 以get方式獲取內容:
<?php$fp = fopen($url, 『r);stream\_get\_meta_data($fp);while(!feof($fp)) {$result .= fgets($fp, 1024);}echo 「url body: $result」;fclose($fp);?>
方法3:用file_get_contents函數,以post方式獲取url
<?php$data = array (『foo => 『bar);$data = http\_build\_query($data); $opts = array (『http => array (『method => 『POST,『header=> 「Content-type: application/x-www-form-urlencodedrn」 .「Content-Length: 」 . strlen($data) . 「rn」,『content => $data)); $context = stream\_context\_create($opts);$html = file\_get\_contents(『http://localhost/e/admin/test.html, false, $context); echo $html;?>
方法4:用fsockopen函數打開url,以get方式獲取完整的數據,包括header和body,fsockopen需要 PHP.ini 中 allow_url_fopen 選項開啟
<?phpfunction get_url ($url,$cookie=false){$url = parse_url($url);$query = $url[path].」?」.$url[query];echo 「Query:」.$query;$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);if (!$fp) {return false;} else {$request = 「GET $query HTTP/1.1rn」;$request .= 「Host: $url[host]rn」;$request .= 「Connection: Closern」;if($cookie) $request.=」Cookie: $cookien」;$request.=」rn」;fwrite($fp,$request);while(!@feof($fp)) {$result .= @fgets($fp, 1024);}fclose($fp);return $result;}}//獲取url的html部分,去掉headerfunction GetUrlHTML($url,$cookie=false){$rowdata = get_url($url,$cookie);if($rowdata){$body= stristr($rowdata,」rnrn」);$body=substr($body,4,strlen($body));return $body;} return false;}?>
方法5:用fsockopen函數打開url,以POST方式獲取完整的數據,包括header和body
<?phpfunction HTTP_Post($URL,$data,$cookie, $referrer=」"){ // parsing the given URL$URL\_Info=parse\_url($URL); // Building referrerif($referrer==」") // if not given use this script as referrer$referrer=」111″; // making string from $dataforeach($data as $key=>$value)$values[]=」$key=」.urlencode($value);$data_string=implode(「&」,$values); // Find out which port is needed – if not given use standard (=80)if(!isset($URL_Info["port"]))$URL_Info["port"]=80; // building POST-request:$request.=」POST 「.$URL_Info["path"].」 HTTP/1.1n」;$request.=」Host: 「.$URL_Info["host"].」n」;$request.=」Referer: $referern」;$request.=」Content-type: application/x-www-form-urlencodedn」;$request.=」Content-length: 「.strlen($data_string).」n」;$request.=」Connection: closen」; $request.=」Cookie: $cookien」; $request.=」n」;$request.=$data_string.」n」; $fp = fsockopen($URL\_Info["host"],$URL\_Info["port"]);fputs($fp, $request);while(!feof($fp)) {$result .= fgets($fp, 1024);}fclose($fp); return $result;} ?>
方法6:使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經打開了curl擴展
<?php$ch = curl_init();$timeout = 5;curl\_setopt ($ch, CURLOPT\_URL, 『http://www.jb51.net/);curl\_setopt ($ch, CURLOPT\_RETURNTRANSFER, 1);curl\_setopt ($ch, CURLOPT\_CONNECTTIMEOUT, $timeout);$file\_contents = curl\_exec($ch);curl_close($ch); echo $file_contents;?>
推薦閱讀:
※[PHP源碼分析]FastCGI協議淺析
※PHP echo,print,print_r,var_dump 區別
※一段生成無限級別分類的代碼思考
※解決:MySQL 報錯:1045- Access denied for user root@localhost(using password YES)
※phpstorm有哪些好用的插件 ?
TAG:PHP |