> 백엔드 개발 > PHP 튜토리얼 > PHP는 stream_context_create()를 사용하여 POST/GET 요청을 시뮬레이션합니다.php 팁

PHP는 stream_context_create()를 사용하여 POST/GET 요청을 시뮬레이션합니다.php 팁

WBOY
풀어 주다: 2016-05-16 19:54:57
원래의
1485명이 탐색했습니다.

이 문서의 예에서는 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 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

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