<?php
    ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Win64; x64; .NET CLR 2.0.50727; SLCC1; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729)');    $str=file_get_contents("https://stanfordwho.stanford.edu/SWApp/Search.do?search=aaa*&filters=closed&affilfilter=stanford%3Astudent*&btnG=Search");
    echo $str;?> 如果把地址直接输入浏览器是可以访问的,但是用file_get_contents()就报错:Warning: file_get_contents(https://stanfordwho.stanford.edu/SWApp/Search.do?search=aaa*&filters=closed&affilfilter=stanford%3Astudent*&btnG=Search) [function.file-get-contents]: failed to open stream: No error in D:\AppServ\www\test.php on line 5
怎么弄呢?谢谢。

解决方案 »

  1.   

    简单的用file_get_contents是不行的.
    这个需要先获取search页面,然后再向search.do post表单值,然后再获取.可能需要user_agent,cookie,refer以及post表单.
      

  2.   

    $conn = fsockopen('ssl://stanfordwho.stanford.edu',443,&$errno,$errstr,3);//timeout 不能为0,https连接端口必须443,host前缀加ssl://,注意本地防火墙。
    if(!$errno)
    {
    $header = "GET /SWApp/Search.do?search=aaa*&filters=closed&affilfilter=stanford%3Astudent*&btnG=Search HTTP/1.1\r\n";
    $header.= "Host:stanfordwho.stanford.edu\r\n";
    $header.= "Connection:Close\r\n\r\n";
    fwrite($conn,$header);
    while(!feof($conn))
    {
    $c .= fgets($conn,128);
    }
    fclose($conn); echo $c;
    }
    else
    {
    echo $erstr;
    }
      

  3.   

    经过CU高人指点,发现问题出还没有支持php_openssl上。谢谢各位。