我正在尝试将QHttp用于更新应用。但是我有一个问题,我无法解决。
我尝试下载文件(工作正常),但如果没有连接到互联网,则创建文件但有0个字节。然后我的旧文件被空文件覆盖,这对于尝试使用该文件的应用程序来说并不是那么好。我需要检查计算机是否已连接到互联网。
注意:代理可能会设置。我在Qt的主页上使用了this example。
答案 0 :(得分:1)
你应该像Mike Suggested一样切换到QNetworkAccessManager,这里是finished()信号上一个插槽的例子:
void ApplicationUpdate::replyFinishedhttpGetChangeLog(QNetworkReply* myReply) {
if (myReply->error() != QNetworkReply::NoError)
{
QByteArray returnedData = myReply->readAll();
if (returnedData.size() > 0) {
if( m_fileChangeLog->exists() )
{
m_fileChangeLog->close();
m_fileChangeLog->remove();
}
m_fileChangeLog->open(QIODevice::ReadWrite);
QDataStream out( m_fileChangeLog );
out.writeRawData(returnedData.data(), returnedData.size());
m_fileChangeLog->flush();
m_fileChangeLog->close();
}
}
}
答案 1 :(得分:0)
首先,您现在可能应该使用QNetworkAccessManager而不是QHttp。
使用其中任何一个,您应该对您几乎总是知道将要启动的网站(例如http://www.google.com/)进行虚拟查询,并将其用作测试以查看您是否具有互联网连接。
更好的方法是使用QNetworkAccessManager读入QByteArray,然后在写入文件之前检查它是否为空。
答案 2 :(得分:0)
每当您编写可能已存在的文件时,您应首先创建QTemporaryFile
,然后在成功下载后将其重命名为最终名称。
答案 3 :(得分:0)