標籤:

PHP發送get、post請求的6種方法簡明總結

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 |