이 문서의 예에서는 PHP가 stream_context_create()를 사용하여 POST/GET 요청을 시뮬레이션하는 방법을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
때때로 서버 측에서 POST/GET 및 기타 요청을 시뮬레이션해야 합니다. 즉, PHP 프로그램에서 시뮬레이션을 구현하는 방법은 무엇입니까? 즉, PHP 프로그램에서 배열이 주어지면 이 배열을 다른 주소로 어떻게 POST/GET합니까? 물론 CURL을 사용하면 쉽지만, CURL 라이브러리를 사용하지 않는다면 어떻게 될까요? 사실 PHP에는 이미 관련 함수가 구현되어 있는데, 이 함수가 다음에 이야기할 stream_context_create() 입니다.
코드를 직접 보여주세요. 이것이 가장 좋은 방법입니다.
$data = array( 'foo'=>'bar', 'baz'=>'boom', 'site'=>'localhost', 'name'=>'nowa magic'); $data = http_build_query($data); //$postdata = http_build_query($data); $options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type:application/x-www-form-urlencoded', 'content' => $data //'timeout' => 60 * 60 // 超时时间(单位:s) ) ); $url = "http://localhost/test2.php"; $context = stream_context_create($options); $result = file_get_contents($url, false, $context); echo $result;
http://localhost/test2.php의 코드는 다음과 같습니다.
$data = $_POST; echo '<pre class="brush:php;toolbar:false">'; print_r( $data ); echo '';
실행 결과는 다음과 같습니다.
Array ( [foo] => bar [baz] => boom [site] => localhost [name] => nowa magic )
몇 가지 핵심 사항:
1. 위 프로그램은 http_build_query() 함수를 사용합니다. 자세한 내용은 이전 기사 "PHP가 http_build_query()를 사용하여 URL 문자열을 구성하는 방법"을 참조하세요.
2. stream_context_create()는 POST를 통한 액세스, 프록시 사용, 헤더 전송 등과 같은 파일 열기를 위한 컨텍스트 옵션을 생성하는 데 사용됩니다. 스트림을 하나 더 만들어 보겠습니다.
$context = stream_context_create(array( 'http' => array( 'method' => 'POST', 'header' => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)). "Content-type: application/x-www-form-urlencoded\r\n", 'content' => http_build_query(array('status' => $message)), 'timeout' => 5, ), )); $ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $context);
3. stream_context_create로 생성된 컨텍스트 옵션은 스트림과 파일 시스템 모두에 사용할 수 있습니다. 파일 핸들 없이 파일 이름에 직접 작동하는 file_get_contents, file_put_contents 및 readfile과 같은 함수에 더 유용합니다. stream_context_create에 헤더를 추가하는 것은 함수의 일부일 뿐이며 프록시, 시간 초과 등을 정의할 수도 있습니다. 이렇게 하면 웹에 접근하는 기능이 컬보다 약하지 않게 됩니다.
4. stream_context_create() 기능: 텍스트 데이터 스트림을 생성하고 반환하며 다양한 옵션을 적용합니다. fopen(), file_get_contents()의 시간 초과 설정, 프록시 서버, 요청 방법 및 헤더 정보 설정에 사용할 수 있습니다. 그리고 다른 과정.
5. stream_context_create는 시간 초과 옵션을 추가하여 file_get_contents 시간 초과 처리를 해결할 수도 있습니다.
$opts = array( 'http'=>array( 'method'=>"GET", 'timeout'=>60, ) ); //创建数据流上下文 $context = stream_context_create($opts); $html =file_get_contents('http://localhost', false, $context); //fopen输出文件指针处的所有剩余数据: //fpassthru($fp); //fclose()前使用
더 많은 PHP 관련 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제를 확인할 수 있습니다. "PHP 작업 및 연산자 사용법 요약", "PHP 네트워크 프로그래밍 기술 요약", " PHP 기본 구문 입문 튜토리얼", "PHP 오피스 문서 조작 스킬 요약(워드, 엑셀, 액세스, ppt 포함)", "요약 PHP 날짜 및 시간 사용법》, "php 객체 지향 프로그래밍 입문 튜토리얼", "php 문자열(문자열) 사용법 요약", "php mysql 데이터베이스 운영 입문 튜토리얼" 그리고 "PHP의 일반적인 데이터베이스 운영 기술 요약"
이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.