//这个页面可以正常访问:http://61.152.237.204:8081/query_result.asp$content = file_get_contents("http://61.152.237.204:8081/query_result.asp");
echo $content;报错:Warning: file_get_contents(http://61.152.237.204:8081/query_result.asp) [function.file-get-contents]: failed to open stream: HTTP request failed! in F:\sto\index.php on line 20

解决方案 »

  1.   

    可能是网站的限制吧?试一下用fsockopen或Curl。发个Socket连接,然后用fwrite等进行读写。因为file_get_contents只要被请求的服务端发个Http 50x、40x这些错误代号就会发生错误的。
      

  2.   

    換幾種方法試試了,php的招比較多
      

  3.   

    很明显,对方肯定记录了cookie 或者临时 sid之类的东西,直接访问是不带这些参数的,程序会自动跳转,用curl 伪造 参数传过去就可以获取
      

  4.   

    看了下那个网站,明显少post 提交的运单号参数,用curl模似一下POST 就OK了
      

  5.   

    用curl试试看,这家伙很实用的
      

  6.   

    file_get_contents
    (PHP 4 >= 4.3.0, PHP 5)file_get_contents — 将整个文件读入一个字符串说明
    string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen]]]] )和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents() 将返回 FALSE。 file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。 注意: 如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。 注意: context 参数可以用 NULL 来忽略。 更新日志版本 说明 
    5.0.0 添加了对 context 的支持。  
    5.1.0 添加了 offset 和 maxlen 参数。  
    注释
    注意: 本函数可安全用于二进制对象。提示
    如果“fopen wrappers”已经被激活,则在本函数中可以把 URL 作为文件名来使用。请参阅 fopen() 函数来获取怎样指定文件名的详细信息以及支持 URL 封装协议的列表:附录 O, 支持的协议/封装协议列表。
    注意: 对 context 的支持是 PHP 5.0.0 添加的。有关 context 的说明见Streams。警告
    当使用 SSL 时,Microsoft IIS 将违反协议不发送 close_notify 标记就关闭连接。PHP 将在到达数据尾端时报告 "SSL: Fatal Protocol Error"。要绕过此问题,应将 error_reporting 级别降低为不包括警告。PHP 4.3.7 及更高版本可以在当使用 https:// 封装协议打开流的时候检测出有此问题的 IIS 服务器并抑制警告。如果使用 fsockopen() 来创建一个 ssl:// 套接字,则需要自己检测并抑制警告信息。