Russian Qt Forum

Qt => Работа с сетью => Тема начата: Zusykss от Февраль 23, 2018, 08:26



Название: Помогите сохранить аудио файл правильно
Отправлено: Zusykss от Февраль 23, 2018, 08:26
Добрый день колеги)
Проблема в следующем, хочу скачать аудио файл с сайт
https://www.lingvolive.com/en-us/translate/en-ru/good

Интересно еще то, что если отловить запрос на снифере то там файл нормально работает, а программно если сохраняю то ошибку выдает, что такой формат не поддерживается ....
Файл загружаю пример кода:

Код:
    std::unique_ptr<QNetworkAccessManager> manager(new QNetworkAccessManager());
    QNetworkRequest request;
    QNetworkReply * reply;
    QEventLoop loop;
    QString brit = "https://api.lingvolive.com/sounds?uri=LingvoUniversal%20(En-Ru)%2Fhome.wav";
    request.setRawHeader("Host", "api.lingvolive.com");
    request.setRawHeader("Connection", "keep-alive");
    request.setRawHeader("Accept-Encoding", "identity;q=1, *;q=0");
    request.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36");
    request.setRawHeader("Accept", "*/*");
    request.setRawHeader("Accept-Language", "ru,en-US;q=0.9,en;q=0.8,uk;q=0.7");
    request.setRawHeader("Range", "bytes=0-");


    request.setUrl(QUrl(brit));
    reply = manager->get(request);
    QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    loop.exec();
    QString strBuf = reply->readAll();
    if (strBuf.size())
    {

        QByteArray result2;
//       if(QCompressor::gzipDecompress(strBuf, result2))
//       {
//           qDebug() << "Decompressed text is: " ;
//       }
//       else
//           qDebug() << "Can't decompress";

        QString fileName;
        fileName = "Home.wav";
        QFile file(fileName);
        QTextStream m_fout(&file);
        file.open(QIODevice::WriteOnly);
        m_fout<<strBuf;
        file.close();
        qDebug()<<"File saved:"<< fileName;
    }



Название: Re: Помогите сохранить аудио файл правильно
Отправлено: Zusykss от Февраль 23, 2018, 08:44
Вопрос решен:
ошибка была
QFile file(fileName);
QTextStream m_fout(&file);
file.open(QIODevice::WriteOnly);
m_fout<<strBuf;   <------- Ошибка из-за этой строчки
file.write(strBuf);   <------- Решение