我打算将PHP用于简单的要求。我需要从URL下载XML内容,我需要将HTTP GET请求发送到该URL。
我如何在PHP中完成?
答案 0 :(得分:343)
除非您需要的不仅仅是文件的内容,否则您可以使用file_get_contents
。
$xml = file_get_contents("http://www.example.com/file.xml");
对于更复杂的事情,我会使用cURL。
答案 1 :(得分:125)
对于更高级的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);
答案 2 :(得分:62)
http_get
应该做到这一点。 http_get
优于file_get_contents
的优势包括查看HTTP标头,访问请求详细信息以及控制连接超时的功能。
$response = http_get("http://www.example.com/file.xml");
答案 3 :(得分:19)
请记住,如果您使用代理,则需要在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;
?>
答案 4 :(得分:9)
根据您的php设置是否允许对URL进行fopen,您也可以使用字符串中的get参数(例如http://example.com?variable=value)简单地打开url
编辑:重新阅读问题我不确定你是否想要传递变量 - 如果你不是,你可以简单地发送包含http://example.com/filename.xml的fopen请求 - 随意忽略变量=值部分
答案 5 :(得分:5)
我喜欢使用fsockopen打开它。
答案 6 :(得分:5)
另一方面,使用其他服务器的REST API在PHP中非常流行。假设您正在寻找一种方法将一些HTTP请求重定向到另一台服务器(例如获取xml文件)。这是一个PHP包,可以帮助您:
@NgModule(...)
所以,获取xml文件:
https://github.com/romanpitak/PHP-REST-Client
答案 7 :(得分:1)
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();