溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在php項(xiàng)目中實(shí)現(xiàn)一個(gè)httpRequest方法

發(fā)布時(shí)間:2021-01-27 16:04:50 來(lái)源:億速云 閱讀:272 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了如何在php項(xiàng)目中實(shí)現(xiàn)一個(gè)httpRequest方法,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

代碼如下:

<?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']) {//未超時(shí) 
               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 <= 0; 
                   } 
               } 
           } 
        fclose($fp); 
           return $returnHeader ? array($header,$content) : $content; 
       } 
    } 
?>

上述內(nèi)容就是如何在php項(xiàng)目中實(shí)現(xiàn)一個(gè)httpRequest方法,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI