3

我需要使用 PHP 下载一个 xml 文件。在对文件进行 curl 调用时,我可以通过设置以下选项来读取文件的内容。

curl_setopt ($http, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($http, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($http,CURLOPT_USERAGENT,'XYZ');

从上面的代码片段可以明显看出,我需要将 VERIFYHOST 设置为 false,并且还需要在调用读取文件时设置显式 USERAGENT,因为该文件不可公开访问,并且只有特定的应用程序可以调用读取它(Web-Security技术和东西)

但是如何下载相同的文件,我试过了,readfile但似乎没有任何效果。Readfile 给出错误fopen/fpassthrufile_get_contentsfailed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

有没有办法用fopenor提供类似 curl 的选项readfile,我认为这可能是解决这个问题的最简单方法。我在 PHP 文档中找不到太多帮助。

请帮忙。

4

1 回答 1

3

您需要将您的特殊用户代理附加到流上下文。

来自http://www.php.net/manual/en/wrappers.http.php

允许使用 HTTP GET 方法通过 HTTP 1.0 对文件/资源​​进行只读访问。Host: 标头随请求一起发送以处理基于名称的虚拟主机。如果您使用 php.ini 文件或流上下文配置了 user_agent 字符串,它也将包含在 request 中

上面链接中的示例#2:

<?php
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");

$fp = fopen('http://www.example.com/index.php', 'r');
?>
于 2012-07-17T19:35:57.863 回答