如何发送来自PHP的GET请求?
我正在计划使用PHP的一个简单的要求。 我需要从URL下载XML内容,为此我需要发送HTTP GET请求到该URL。
我如何在PHP中做到这一点?
除非您需要的不仅仅是文件的内容,否则您可以使用file_get_contents
。
$xml = file_get_contents("http://www.example.com/file.xml");
对于任何更复杂的事情,我会用cURL 。
对于更高级的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);
http_get
应该做的伎俩。 http_get
优于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上打开,您也可以简单地使用string中的get参数来打开url(例如http://example.com?variable=value )
编辑:重新阅读的问题我不确定你是否想要传递variables或不 – 如果你不是你可以简单地发送fopen请求包含http://example.com/filename.xml – 感觉自由忽略variables=值部分
我喜欢使用fsockopen打开这个。
另一方面,使用其他服务器的REST API在PHP中非常stream行。 假设您正在寻找将某些HTTP请求redirect到其他服务器的方法(例如获取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();