PHP的file_get_contents高级请求构造

从 PHP 5.0.0开始增加了一个file_get_contents的context句柄,通过这个句柄加上stream_context_create()函数就可以实习各种高级请求的构造,原来只能get,现在也可以post了,还能进行诸如reffer,Cookie,超时时间等等HTTP请求头的详细构造和设置。
举例
进行get请求,超时时间160s
[php]$opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>160,
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n",
'user_agent'=>'PHP'
)
);
//ini_set('user_agent','Mozilla/5.0 (Debian 6.0) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30');
$context = stream_context_create($opts);
$str = file_get_contents('http://example.com',false, $context); [/php]
进行Post请求也很简单,不过那样的话还不如直接用fopen呢,具体例子查看stream_context_create()函数
[php]$data = array("name" => 'tim',"content" => 'test');
$data = http_build_query($data);
$opts = array(
'http'=>array(
'method'=>"POST",
'header'=>"Content-type: application/x-www-form-urlencoded\r\n".
"Content-length:".strlen($data)."\r\n" .
"Cookie: foo=bar\r\n" .
"\r\n",
'content' => $data,
)
);
$Context = stream_context_create($opts);
$str=file_get_contents("http://example.com", false, $Context); [/php]
http_build_query函数是php5加入的,作用就是把数组或对象转换成url的querystring

Author Info :
  • From:PHP的file_get_contents高级请求构造
  • URL:https://blog.ihipop.com/2011/07/2615.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注