Answers:
除非只需要文件内容,否则可以使用file_get_contents
。
$xml = file_get_contents("http://www.example.com/file.xml");
对于更复杂的事情,我将使用cURL。
failed to open stream: HTTP request failed!
file_get_contents
您无法使用自定义Cookie,标头和浏览器通常会发送的其他内容进行请求,因此您可能无法获得所需的响应。在这种情况下,最好还是使用CURL。(但这不是OP的情况。)
对于更高级的GET / POST请求,可以安装CURL库(http://us3.php.net/curl):
$ch = curl_init("REMOTE XML FILE URL GOES HERE"); // such as http://example.com/example.xml
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
file_get_contents()
。一个简单的4字母字符串大约需要10秒钟,而卷曲则需要更合理的〜1秒最大时间。
http_get
应该可以。http_get
over 的优点file_get_contents
包括查看HTTP标头,访问请求详细信息以及控制连接超时的能力。
$response = http_get("http://www.example.com/file.xml");
请记住,如果您使用代理,则需要在php代码中做一些技巧:
(PROXY WITHOUT AUTENTICATION EXAMPLE)
<?php
$aContext = array(
'http' => array(
'proxy' => 'proxy:8080',
'request_fulluri' => true,
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.google.com", False, $cxContext);
echo $sFile;
?>
根据您的php设置是否允许在URL上进行fopen,您还可以简单地使用字符串中的get参数来打开url(例如http://example.com?variable=value)
编辑:重新阅读该问题,我不确定您是否要传递变量-如果不是,则可以简单地发送包含http://example.com/filename.xml的fopen请求-随意忽略变量=值部分
另一方面,使用其他服务器的REST API在PHP中非常流行。假设您正在寻找一种将一些HTTP请求重定向到另一台服务器的方法(例如,获取xml文件)。这是一个PHP软件包,可以帮助您:
https://github.com/romanpitak/PHP-REST-Client
因此,获取xml文件:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Guzzle是一个非常著名的库,它使进行各种HTTP调用变得非常容易。见https://github.com/guzzle/guzzle。安装composer require guzzlehttp/guzzle
并运行composer install
。现在,下面的代码足以用于http get调用。
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();