이 글에서는 주로 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()前使用
요약: 위 내용은 이 기사의 전체 내용입니다. 모든 사람의 학습에 도움이 되기를 바랍니다.
관련 권장 사항:
엑셀 파일 읽기의 PHPExcel 구현 및 간단한 예제
PHP MVC 프레임워크 skymvc는 다중 파일 업로드 구현을 지원합니다. 방법
위 내용은 PHP는 stream_context_create()를 사용하여 POST/GET 요청 메소드 및 예제 분석을 시뮬레이션합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!