php_php 팁에서 httpRequest를 구현하는 방법

WBOY
풀어 주다: 2016-05-16 20:21:05
원래의
1240명이 탐색했습니다.

이 기사의 예에서는 PHP에서 httpRequest를 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.

학교 도서관 웹사이트에서 데이터를 가져와 처리한 후 브라우저로 반환하고 싶습니다. 여러 가지 방법을 시도했습니다. 처음에는 http_request()를 시도했는데 이 대학에서는 pecl_http를 지원하고 있다가 인터넷에 널리 퍼져 있는 HttpRequest 클래스를 어떻게 사용하는지 몰라서 시도했는데 실패했습니다. 나중에 나는 httpRequest($url, $post='', $method='GET', $limit=0, $returnHeader=FALSE, $cookie='', $bysocket=FALSE, $ip='', 함수를 보았습니다. $ timeout=15, $block=TRUE), 성공적으로 사용해서 공유하려고 올렸습니다. 함수 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
    /**
    * HTTP 요청 재지정
    *
    * @param 문자열 $url
    * @param 배열 $post
    * @param 문자열 $method
    * @param bool $returnHeader
    * @param 문자열 $cookie
    * @param bool $bysocket
    * @param 문자열 $ip
    * @param 정수 $timeout
    * @param bool $block
    * @return 문자열 응답
   */ 
    함수 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['호스트']; 
       $path = $matches['경로'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/'; 
       $port = !empty($matches['port']) ? $matches['port'] : 80; 
       if(strtolower($method) == '게시물') { 
           $post = (is_array($post) 및 !empty($post)) ? http_build_query($post) : $post; 
           $out = "POST $path HTTP/1.0rn"; 
           $out .= "수락: */*rn"; 
           //$out .= "추천자: $boardurlrn"; 
           $out .= "수락 언어: zh-cnrn"; 
           $out .= "콘텐츠 유형: 애플리케이션/x-www-form-urlencodedrn"; 
           $out .= "사용자 에이전트: $_SERVER[HTTP_USER_AGENT]rn"; 
           $out .= "호스트: $hostrn"; 
           $out .= '콘텐츠 길이: '.strlen($post)."rn"; 
           $out .= "연결: 닫기"; 
           $out .= "캐시 제어: no-cachern"; 
           $out .= "쿠키: $cookiernrn"; 
           $아웃 .= $포스트; 
       } else { 
           $out = "$path HTTP/1.0rn 가져오기"; 
           $out .= "수락: */*rn"; 
           //$out .= "추천자: $boardurlrn"; 
           $out .= "수락 언어: zh-cnrn"; 
           $out .= "사용자 에이전트: $_SERVER[HTTP_USER_AGENT]rn"; 
           $out .= "호스트: $hostrn"; 
           $out .= "연결: 닫기"; 
           $out .= "쿠키: $cookiernrn"; 
       } 
       $fp = fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout); 
       if(!$fp) return ''; 그렇지 않으면 { 
           $헤더 = $content = ''; 
           stream_set_blocking($fp, $block); 
           stream_set_timeout($fp, $timeout); 
           fwrite($fp, $out); 
           $status = stream_get_meta_data($fp); 
           if(!$status['timed_out']) {//未超时 
               while (!feof($fp)) { 
                   $헤더 .= $h = fgets($fp); 
                   if($h && ($h == "rn" ||  $h == "n")) break; 
               } 
 
               $스톱 = 거짓; 
               while(!feof($fp) && !$stop) { 
                   $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit)); 
                   $콘텐츠 .= $데이터; 
                   if($limit) { 
                       $한계 -= strlen($data); 
                       $stop = $limit <= 0; 
                   } 
               } 
           } 
        fclose($fp); 
           $returnHeader를 반환합니까? 배열($header,$content) : $content; 
       } 
    } 
?>

사용하는 데 사용되는 사례입니다.

复제대码 代码如下:
echo httpRequest('http://www.baidu.com');

希望本文所述对大家程序设计有所帮助。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!