이 기사의 예에서는 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');
希望本文所述对大家程序设计有所帮助。