如何使用WebClient下载PHP脚本生成的XML内容?
问题描述:
我有一个PHP脚本,它使用'echo'命令和数据库中的数据生成XML。 因此,如果我从浏览器访问此脚本,我可以看到xml数据并下载它。如何使用WebClient下载PHP脚本生成的XML内容?
所以我写一个软件来检索这个数据使用webclient类。但webclient只下载一个空文件,所以我想它试图下载.php文件,而不是生成的动态内容。
PHP脚本发送header("Content-type: text/xml")
,Web客户端尝试从https://mySecureServer.com/db/getXMLData.php
下载(也许这是问题)。
任何想法?
编辑:Web客户端代码(只是撕开了一些本地的文件操作):
string url = @"https://mySecureServer.com/db/getXMLData.php";
WebClient client = new WebClient();
client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompletedEvtHdl);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChangedEvtHdl);
client.BaseAddress = @"https://mySecureServer.com/db/";
client.DownloadFileAsync(new Uri(url), toSavePath + filename);
答
如果你只是想下载此getXMLData.php
脚本生成的XML数据,那么你可以直接使用cURL
得到它的内容:
function get_web_page($url)
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => false // disable certificate checking
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
//Now get the webpage
$data = get_web_page("https://mySecureServer.com/db/getXMLData.php");
//Display the data (optional)
echo "<pre>" . $data['content'] . "</pre>";
+0
尝试了你的代码,但得到了这样的结果:**“指定的CGI应用程序由于没有返回一组完整的HTTP头而导致错误,它返回的头是:
Webclient无法下载.php文件,因为这是永远不可用的。 – 2010-09-01 17:07:29
请显示您正在使用的代码下载。 – 2010-09-01 17:08:07