如何发送来自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();