phpでhttpRequestを実装する方法を簡単に説明します。

墨辰丷
リリース: 2023-03-31 19:32:02
オリジナル
5392 人が閲覧しました

この記事では、httpRequest を実装する php の方法を主に紹介します。http を操作する php のスキルも含まれます。必要な方は参考にしてください。

この記事の例では、http を操作する方法について説明します。 httpRequestを実装するphp。詳細は次のとおりです。

学校図書館の Web サイトからデータを取得して、ブラウザに返す前に処理したいと考えており、さまざまな方法を試しました。最初は http_request() を試しましたが、この大学は pecl_http をサポートしていました。次に、インターネット上で広く流通しているクラス HttpRequest を試しましたが、使い方が分からなかったので失敗しました。その後、関数 httpRequest($url, $post='', $method='GET', $limit=0, $returnHeader=FALSE, $cookie='', $bysocket=FALSE, $ip='', $ timeout=15, $block=TRUE)、無事使用できたので共有用に投稿しました。関数コードは次のとおりです:

コードは次のとおりです:

<?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=&#39;&#39;,$method=&#39;GET&#39;,$limit=0,$returnHeader=FALSE,$cookie=&#39;&#39;,$bysocket=FALSE,$ip=&#39;&#39;,$timeout=15,$block=TRUE) {  
       $return = &#39;&#39;;  
       $matches = parse_url($url);  
       !isset($matches[&#39;host&#39;]) && $matches[&#39;host&#39;] = &#39;&#39;;  
       !isset($matches[&#39;path&#39;]) && $matches[&#39;path&#39;] = &#39;&#39;;  
       !isset($matches[&#39;query&#39;]) && $matches[&#39;query&#39;] = &#39;&#39;;  
       !isset($matches[&#39;port&#39;]) && $matches[&#39;port&#39;] = &#39;&#39;;  
       $host = $matches[&#39;host&#39;];  
       $path = $matches[&#39;path&#39;] ? $matches[&#39;path&#39;].($matches[&#39;query&#39;] ? &#39;?&#39;.$matches[&#39;query&#39;] : &#39;&#39;) : &#39;/&#39;;  
       $port = !empty($matches[&#39;port&#39;]) ? $matches[&#39;port&#39;] : 80;  
       if(strtolower($method) == &#39;post&#39;) {  
           $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 .= &#39;Content-Length: &#39;.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 &#39;&#39;; else {  
           $header = $content = &#39;&#39;;  
           stream_set_blocking($fp, $block);  
           stream_set_timeout($fp, $timeout);  
           fwrite($fp, $out);  
           $status = stream_get_meta_data($fp);  
           if(!$status[&#39;timed_out&#39;]) {//未超时  
               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;  
       }  
    }  
?>
ログイン後にコピー

呼び出しも非常に簡単です。簡単な例:

コードは次のとおりです:

echo httpRequest(&#39;http://www.baidu.com&#39;);
ログイン後にコピー

概要: 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。

関連する推奨事項:

PHP でフォームを自動生成する方法

PHP で MySQL データベースを操作する方法

サーバー側事前定義変数 $_SERVER

の php メソッド

以上がphpでhttpRequestを実装する方法を簡単に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート