php获取请求url时响应的报头信息几种方法

    1、用file_get_contents或者fopen、file、readfile等函数读取url的时候,会创建一个名 为$http_response_header的变量来保存http响应的报头.

    示例代码一:

<?php  
       $url = 'http://www.baidu.com';  
       $html = file_get_contents($url);  
       print_r($http_response_header);  
    //输出结果  
       Array(  
            [0] => HTTP/1.1 200 OK  
            [1] => Date: Tue, 06 Nov 2012 08:51:01 GMT  
            [2] => Server: BWS/1.0  
            [3] => Content-Length: 9803  
            [4] => Content-Type: text/html;charset=gbk  
            [5] => Cache-Control: private  
            [6] => Expires: Tue, 06 Nov 2012 08:51:01 GMT  
            [7] => Set-Cookie: BAIDUID=6635735B51B28640F425F802C49340F2:FG=1;   
            expires=Tue, 06-Nov-42 08:51:01 GMT; path=/; domain=.baidu.com  
            [8] => P3P: CP=" OTI DSP COR IVA OUR IND COM "  
            [9] => Connection: Close  
      )        
  ?>  

    2、使用fopen等函数打开的数据流信息可以用 stream_get_meta_data来获取。

示例代码二:

   <?php  
     $fp = fopen($url, 'r');  
     print_r(stream_get_meta_data($fp));  
     fclose($fp);  
//输出结果  
Array  
(  
    [wrapper_data] => Array  
        (  
            [0] => HTTP/1.1 200 OK  
            [1] => Date: Tue, 06 Nov 2012 08:54:22 GMT  
            [2] => Server: BWS/1.0  
            [3] => Content-Length: 9803  
            [4] => Content-Type: text/html;charset=gbk  
            [5] => Cache-Control: private  
            [6] => Expires: Tue, 06 Nov 2012 08:54:22 GMT  
            [7] => Set-Cookie: BAIDUID=347578BCBD709F27925BDD8B05364A73:FG=1;  
             expires=Tue, 06-Nov-42 08:54:22 GMT; path=/; domain=.baidu.com  
            [8] => P3P: CP=" OTI DSP COR IVA OUR IND COM "  
            [9] => Connection: Close  
        )  
  
    [wrapper_type] => http  
    [stream_type] => tcp_socket  
    [mode] => r  
    [unread_bytes] => 0  
    [seekable] =>   
    [uri] => http://www.baidu.com  
    [timed_out] =>   
    [blocked] => 1  
    [eof] =>   
)  
?> 

    3、get_headers()也可以获取请求url的响应报文。

示例代码三:

 <?php  
print_r(get_headers($url));  
Array  
(  
    [0] => HTTP/1.1 200 OK  
    [1] => Date: Tue, 06 Nov 2012 08:58:41 GMT  
    [2] => Server: BWS/1.0  
    [3] => Content-Length: 9803  
    [4] => Content-Type: text/html;charset=gbk  
    [5] => Cache-Control: private  
    [6] => Expires: Tue, 06 Nov 2012 08:58:41 GMT  
    [7] => Set-Cookie: BAIDUID=87B6F26EEC74F2B8F7FABA934DC6BB24:FG=1;   
    expires=Tue, 06-Nov-42 08:58:41 GMT; path=/; domain=.baidu.com  
    [8] => P3P: CP=" OTI DSP COR IVA OUR IND COM "  
    [9] => Connection: Close  
)  
?>  

  4、php5中新增的参数context使这些函数更加灵活,通过它我们可以定制http请 求,甚至post数据。

出处:http://blog.csdn.net/phplamp527/article/details/8153541 //p.s.我空间用的是 nginx 配置,用这个 get_headers() 速度很慢,有很多时候弹出500服务器错误。而我电脑本地机用的是 apache 速度就很快。使用方法1可以解决这个问题。

posted @ 2016-06-27 11:37  stma  阅读(1600)  评论(0)    收藏  举报