>  기사  >  백엔드 개발  >  PHP는 stream_context_create()를 사용하여 POST/GET 요청 메소드 및 예제 분석을 시뮬레이션합니다.

PHP는 stream_context_create()를 사용하여 POST/GET 요청 메소드 및 예제 분석을 시뮬레이션합니다.

墨辰丷
墨辰丷원래의
2018-06-04 10:35:321850검색

이 글에서는 주로 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 &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r( $data );
echo &#39;
';


실행 결과 는 :


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( 
    &#39;http&#39; => array( 
        &#39;method&#39; => &#39;POST&#39;, 
        &#39;header&#39; => sprintf("Authorization: Basic %s\r\n", base64_encode($username.&#39;:&#39;.$password)). 
        "Content-type: application/x-www-form-urlencoded\r\n", 
        &#39;content&#39; => http_build_query(array(&#39;status&#39; => $message)), 
        &#39;timeout&#39; => 5, 
    ), 
)); 
$ret = file_get_contents(&#39;http://twitter.com/statuses/update.xml&#39;, 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(
  &#39;http&#39;=>array(
  &#39;method&#39;=>"GET",
  &#39;timeout&#39;=>60,
 )
);
//创建数据流上下文
$context = stream_context_create($opts);
$html =file_get_contents(&#39;http://localhost&#39;, false, $context);
//fopen输出文件指针处的所有剩余数据:
//fpassthru($fp); //fclose()前使用

요약: 위 내용은 이 기사의 전체 내용입니다. 모든 사람의 학습에 도움이 되기를 바랍니다.

관련 권장 사항:

php빠른 정렬 원리 및 구현 방법 및 예제 분석

엑셀 파일 읽기의 PHPExcel 구현 및 간단한 예제

PHP MVC 프레임워크 skymvc는 다중 파일 업로드 구현을 지원합니다. 방법

위 내용은 PHP는 stream_context_create()를 사용하여 POST/GET 요청 메소드 및 예제 분석을 시뮬레이션합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.