天天看點

PHP 發送GET 和 POST資料的方法分析

一、使用GET方法

<?php

// Create a stream

$opts = array(

  'http'=>array(

    'method'=>"GET",

    'header'=>"Accept-language: en\r\n"

  )

);

$context = stream_context_create($opts);

$file = file_get_contents('http://www.yourhost.com/', false, $context);

?>

如果要送出參數,務必使用:http_build_query方法,如:

$data = array('foo'=>'bar',

              'baz'=>'boom',

              'cow'=>'milk',

              'php'=>'hypertext processor');

$querystr = http_build_query($data);

二、使用POST方法

$data = array ('foo' => 'bar', 'bar' => 'baz');

$data = http_build_query($data);

$context_options = array (

        'http' => array (

            'method' => 'POST',

            'header'=> "Content-type: application/x-www-form-urlencoded\r\n"

                . "Content-Length: " . strlen($data) . "\r\n",

            'content' => $data

            )

        );

$context = context_create_stream($context_options)

三、重點提示

http_build_query會對參數值進行urlencode,接收端的$_GET或$_REQUEST會自動進行urldecode;

如果發送請求時沒有進行或者隻對部分參數進行urlencode,接收代碼$_REQUEST可能不會進行自動urldecode解碼。