如何保存通过curl获取的xml文件?

时间:2013-10-08 12:57:11

标签: php xml curl

我使用curl完成了这个代理。我成功地获取了要在页面中显示的xml。我试图在本地保存副本但没有成功,我尝试过(已经在下面的完整代码中):

$fp = fopen('data.xml', 'w');
fwrite($fp, $xml);
fclose($fp);

但我没有错误和一个空的“data.xml”文件......如何做到这一点? 感谢

[EDIT2]:已解决,我刚刚添加了标记:curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 并做了! (在下面的代码中更新 带有@spell建议的代码。

define ('HOSTNAME', 'http://www.camara.gov.br');


$path = "http://www.camara.gov.br/SitCamaraWS/Deputados.asmx/ObterDeputados?";
$url = HOSTNAME.$path;

$session = curl_init($path);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_HTTPGET, true);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
curl_setopt($session, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36');

header("Content-Type: text/xml");


$xml = curl_exec($session);


curl_close($session);

file_put_contents ('./data.xml', $xml); 
?>

1 个答案:

答案 0 :(得分:4)

您可以使用file_put_contents功能。

在你的情况下,它将是:

// Make the call
$xml = curl_exec($session);


// done, shutDown.
curl_close($session);

if (file_put_contents ('./data.xml', $xml) !== false) {
     echo 'Success!';
} else {
     echo 'Failed';
}

并且

  

但我没有错误和空的“data.xml”文件

下次提供错误