Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: qt скачать файл  (Прочитано 2123 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gudwin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
qt скачать файл
« : 08 Сентября 2010, 21:20:42 »
Здравствуйте. Можно ли из qt скачать файл из интернета?

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: qt скачать файл
« Ответ #1 : 08 Сентября 2010, 22:01:47 »
Да смотри документацию по QNetworkAccessManager там прямо в доках пример как отправить GET запрос по HTTP и получить файл в из ответа.

Оффлайн Gudwin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
Re: qt скачать файл
« Ответ #2 : 08 Сентября 2010, 23:11:20 »
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

а здесь можно вместо параметров задать cookie?

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: qt скачать файл
« Ответ #3 : 09 Сентября 2010, 00:10:11 »
Конечно. Cookie это тоже один из хедеров HTTP запроса. Только у QNetworkAccessManager есть свои функции для работы с печеньками: QNetworkAccessManager::setCookieJar

Оффлайн Gudwin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
Re: qt скачать файл
« Ответ #4 : 09 Сентября 2010, 17:17:09 »
спасибо за ответы, но у меня родился новый)
Я скачиваю страницу и можно ли представить ее в виде QStringList? C html разметкой.
У меня получается представить скаченные данные в виде QByteArray но при переводе в QStringList получается какой то бред.(Я filter-ом ищу конкретное сочетание, но он не находит, хотя в массиве оно есть)

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: qt скачать файл
« Ответ #5 : 09 Сентября 2010, 17:25:58 »
Почему QStringList? Тебе QString нужен.

Преобразование QByteArray -> QString неоднозначно. Всё зависит от кодировки исходных данных.

Вообще насколько я помню QNetworkReply из которого ты читаешь всё что тебе нужно наследуется от QIODevice следовательно с ним ты можешь работать используя класс QTextStream если точно знаешь что это текст и знаешь кодировку этого текста (что в твоём случае верно).

Оффлайн Gudwin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
Re: qt скачать файл
« Ответ #6 : 09 Сентября 2010, 17:52:15 »
Я пытаюсь найти определенные строки в файле, вот и пробовал представить в QStringList

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: qt скачать файл
« Ответ #7 : 09 Сентября 2010, 18:03:15 »
Ну тогда просто читай QNetworkReply через QTextStream посторочно (там есть функция readLine). Только не забудь правильную кодировку указать.

Оффлайн Gudwin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
Re: qt скачать файл
« Ответ #8 : 09 Сентября 2010, 23:04:51 »
А менеджер надо удалять когда данные получены?

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: qt скачать файл
« Ответ #9 : 10 Сентября 2010, 00:56:46 »
Если его больше не будешь использовать, то да. В C++ нужно думать о том кто и когда память чистит. В Qt можно использовать соотношение parent/child между наследниками QObject тогда parent объект удляет все дочернии объекты при удалении его. Подробней: http://doc.qt.nokia.com/4.6/objecttrees.html

 

Страница сгенерирована за 0.016 секунд. Запросов: 22.