我计划使用PHP来满足一个简单的需求。我需要从URL下载XML内容,为此我需要向该URL发送HTTP GET请求。

PHP中怎么做呢?


当前回答

另一方面,使用服务器的REST API在PHP中非常流行。您可以假设所有url都是REST API的一部分,并使用许多设计良好的PHP包。

实际上,REST API是一种使用站点服务的方法。

因此,开发了许多PHP包来简化REST API调用。例如,这里有一个非常好的例子:

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();

另一方面,使用服务器的REST API在PHP中非常流行。您可以假设所有url都是REST API的一部分,并使用许多设计良好的PHP包。

实际上,REST API是一种使用站点服务的方法。

因此,开发了许多PHP包来简化REST API调用。例如,这里有一个非常好的例子:

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();

记住,如果你正在使用代理,你需要在你的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;
?>

我喜欢用fsockopen来做这个。

取决于你的php设置是否允许对url进行fopen,你也可以简单地使用字符串中的get参数fopen url(例如http://example.com?variable=value)

编辑:重新阅读问题,我不确定你是否希望传递变量-如果你不是,你可以简单地发送包含http://example.com/filename.xml的fopen请求-请随意忽略变量=值部分