QFile file;
file.setFileName("kartinka.jpg");
if(!file.open(QIODevice::WriteOnly))
{
QMessageBox::warning(this, tr("HTTP GET"),
tr("Can't write file")
.arg(file.fileName())
.arg(file.errorString()));
return;
}
QHttp *http = new QHttp;
http->setHost("img68.imageshack.us");
http->get("/img68/6868/decayinghopesbyblackribca8.jpg", &file);
file.close();
http->closeConnection();
вот и так попробывал, один хрен прога вылетает с предложением отправить отчет в майкрософт)))
Цитата(BRE @ 22.2.2010, 1:14)
Цитата(eldar85 @ 21.2.2010, 21:51)
почему то такая запись вообще вызывает ошибку программы и винда ее сразу закрывает.
Метод QHttp::get запускает асинхронную загрузку данных, а ты следующей строкой закрываешь файл, в который он должен сохранять результат.
Примеры загрузки с использованием QHttp и QNetworkAccessManager. Загрузка принудительно делается синхронной, но это легко переделывается для работы с сигналами.
void loader_http()
{
QFile file( "save.gif" );
if( !file.open( QIODevice::WriteOnly ) )
{
qDebug() << "Error create file";
return;
}
QHttp http;
QEventLoop loop;
QObject::connect( &http, SIGNAL( done( bool ) ), &loop, SLOT( quit() ) );
http.setHost( "www.prog.org.ru" );
http.get( "/Themes/default/images/smflogo.gif", &file );
loop.exec();
qDebug() << http.state() << http.error() << http.bytesAvailable();
}
void loader_nam()
{
QEventLoop loop;
QNetworkAccessManager manager;
QNetworkReply *reply = manager.get( QNetworkRequest( QUrl( "http://prog.org.ru/Themes/default/images/smflogo.gif" ) ) );
QObject::connect( reply, SIGNAL( finished() ), &loop, SLOT( quit() ) );
loop.exec();
qDebug() << reply->error() << reply->bytesAvailable();
QByteArray buf = reply->readAll();
QFile file( "save.gif" );
if( file.open( QIODevice::WriteOnly ) )
{
file.write( buf );
}
}
Большое спасибо!!!!!!!!!!!!!!!!!! работает))))))))))