Russian Qt Forum
Сентябрь 30, 2024, 12:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Программно нажать кнопку в браузере  (Прочитано 4016 раз)
tall32
Гость
« : Октябрь 21, 2012, 09:17 »

Доброго времени суток.

Необходимо программно, грубо говоря лазить по одному сайту. Что бы скачивать от туда файлы.
Сайт с авторизацией.

Не подскажите в какую сторону мне "смотреть")))или скажите есть ли где нибудь примеры))..

В заранее спасибо...
Записан
Bepec
Гость
« Ответ #1 : Октябрь 21, 2012, 09:27 »

QNetworkAccessManager.

А так же вики с описанием сетевых технологий, авторизации, идентификации и технологии доступа.

Тема довольно обширная.

PS если делать "отвали", то должно хватить QWebView и JavaScript.
Записан
tall32
Гость
« Ответ #2 : Октябрь 21, 2012, 09:34 »

Ок) спасибо))...буду копать в ту сторону..
Записан
tall32
Гость
« Ответ #3 : Октябрь 21, 2012, 20:43 »

вроде бы чуть , чуть разобрался с QNetworkAccessManager.
вопрос что я делаю не так?

Код:
..........
    QNetworkAccessManager manager;
    QNetworkReply *reply;
    QUrl apiUrl;
    QByteArray requestString;
..........
    apiUrl = "http://localhost/index.php";

    requestString = "n=1111";

    QNetworkRequest request(apiUrl);

    reply = manager.post(request,requestString);

    connect(reply, SIGNAL(finished()),this, SLOT(getReplyFinished()));
    connect(reply, SIGNAL(readyRead()),this, SLOT(readyReadReply()));

.................
файл 'index.php'
 
Код:
<?php
    echo $_POST['n'];
?>

что я делаю не так?

если отправлять запрос через "GET" то он успешно доходит, а через "POST"
вообще ни как(((...
Записан
Bepec
Гость
« Ответ #4 : Октябрь 21, 2012, 22:06 »

Могу завтра посмотреть, но ничего не обещаю. Я с сетью дел особых не имею, мне больше RS-485 по душе Улыбающийся
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #5 : Октябрь 21, 2012, 22:39 »

странно что get доходит Улыбающийся можешь скинуть побольше кода ? Если у тебя так выглядит функция как у тебя написана, то по выходу из нее QNetworkAccessManager будет уничтожен, и по идее соединение должно будет отвалиться. Еще интересно как ответ выводишь.
Записан
tall32
Гость
« Ответ #6 : Октябрь 22, 2012, 04:23 »


заголовочный файл:
Код:
.......................................
private slots:
    void getReplyFinished();
    void readyReadReply();
private:
    QNetworkAccessManager manager;
    QNetworkReply *reply;
    QUrl apiUrl;
    QByteArray requestString;
.......................................

не заголовочный файл)...
Код:
.......................................
    apiUrl = "http://localhost/index.php";
    requestString = "n=1111";

    QNetworkRequest request(apiUrl);
    reply = manager.post(request, requestString);

    connect(reply, SIGNAL(finished()),this, SLOT(getReplyFinished()));
    connect(reply, SIGNAL(readyRead()),this, SLOT(readyReadReply()));
..........................................
void MainWindow::getReplyFinished()
{
    reply->deleteLater();

    QByteArray data;
    data = reply->readAll();
    ui->webView->setHtml(data);
}
Записан
Bepec
Гость
« Ответ #7 : Октябрь 22, 2012, 06:58 »

ecspertiza, а почему он должен отвалиться? У него же остаётся указатель на QNetworkReply. И он по идее не даёт умереть QNAM'у, ибо ссылка на него жива в его нутрях?

PS прошу прочитать и обсудить Улыбающийся Возможно я и ошибаюсь.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #8 : Октябрь 22, 2012, 09:11 »

ecspertiza, а почему он должен отвалиться? У него же остаётся указатель на QNetworkReply. И он по идее не даёт умереть QNAM'у, ибо ссылка на него жива в его нутрях?

PS прошу прочитать и обсудить Улыбающийся Возможно я и ошибаюсь.

ну у меня на то было две причины, первое это для того что бы разорвать коннект я всегда вызываю delete qnam и там уже все равно есть ссылка или нет )))) Во вторых даже если ссылка на объект и была, то по выходу из ф-ции объект должен будет удалиться и ссылка будет не валидна вроде как, если я ничего не путаю. Но благо у автора не так как я думал, у него QNam вместе с классом создается.

это офф топик )) теперь по вопросу автора, утром на светлую голову я вспоминаю формат пост запроса и понимаю что он не верный, вот в $_POST ничего и не приходит. Тебе придеться или руками формировать тело пост запроса, посмотри на википедии например как оно выглядет или использовать QHttpMultiPart если у тебя Qt >= 4.8
« Последнее редактирование: Октябрь 22, 2012, 09:14 от ecspertiza » Записан
tall32
Гость
« Ответ #9 : Октябрь 22, 2012, 11:00 »

спасибо)
сегодня попробую сделать))...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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