Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Trollolo от Апрель 08, 2012, 11:01



Название: QNetworkAccessManager[РЕШЕНО]
Отправлено: Trollolo от Апрель 08, 2012, 11:01
Имеется Qlineedit в которой вводится адрес сайта
послев одной из функций:
    QUrl urlsite(HttpAdd->text());
    request.setUrl(urlsite); // request - QNetworkRequest
    request.setRawHeader("User-Agent", "mozzila 5.0");
    Zapros = manager->get(request); // Zapros - QNetworkReply
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(getUrl(QNetworkReply*)));

В слоте geturl:
   WindowResult->setText(QString::fromUtf8(reply->readAll()));
   manager->deleteResource(request);

Проблема вот в чем: после второго запуска это куска кода окно WindowResult (это QTextEdit) остается пустым. Что делать?


Название: Re: QNetworkAccessManager
Отправлено: mutineer от Апрель 08, 2012, 12:21
проверь reply на ошибку - может ответ не пришел


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 12:31
проверь reply на ошибку - может ответ не пришел
Пробовал, ошибок нет.


Название: Re: QNetworkAccessManager
Отправлено: mutineer от Апрель 08, 2012, 12:37
второй запуск - имеется в виду второй запуск приложения или второй вход в первый метод?


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 12:38
второй запуск - имеется в виду второй запуск приложения или второй вход в первый метод?
Второй вход в первый метод


Название: Re: QNetworkAccessManager
Отправлено: mutineer от Апрель 08, 2012, 12:42
так происходит с запросом на любой урл или только на определенный?


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 12:43
Вот скрины для полного понимания


Название: Re: QNetworkAccessManager
Отправлено: kambala от Апрель 08, 2012, 12:44
manager->deleteResource(request); - а это зачем? тебе действительно надо слать DELETE запрос?

ответ (то, что у тебя по какой-то непонятной причине находится в переменной Zapros) надо удалять через delete в getUrl()

для оформления кода используется тег code

правильно пишется не "mozzila", а "mozilla"

з.ы. ты нас случайно не троллишь, судя по нику? :D


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 12:46
manager->deleteResource(request); - а это зачем? тебе действительно надо слать DELETE запрос?
Я просто пытался ошибку найти
Цитата: kambala
ответ (то, что у тебя по какой-то непонятной причине находится в переменной Zapros) надо удалять через delete в getUrl()

для оформления кода используется тег code

правильно пишется не "mozzila", а "mozilla"

з.ы. ты нас случайно не троллишь, судя по нику? :D
Не тролю))


Название: Re: QNetworkAccessManager
Отправлено: mutineer от Апрель 08, 2012, 12:52
manager->deleteResource(request); - а это зачем? тебе действительно надо слать DELETE запрос?
Я просто пытался ошибку найти

Магией занимаешься, да?)))

я так понял, что сервер у тебя локально стоит. А он на второй запрос отвечает?


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 13:04
manager->deleteResource(request); - а это зачем? тебе действительно надо слать DELETE запрос?
Я просто пытался ошибку найти

Магией занимаешься, да?)))

я так понял, что сервер у тебя локально стоит. А он на второй запрос отвечает?
Да, стоит. Проблема вы том, что после первого запроса - на любой юрл такая реакция.


Название: Re: QNetworkAccessManager
Отправлено: kambala от Апрель 08, 2012, 13:09
попробуй request не хранить полем класса, а создавать прямо перед выполнением запроса


Название: Re: QNetworkAccessManager
Отправлено: mutineer от Апрель 08, 2012, 13:10
Да, стоит. Проблема вы том, что после первого запроса - на любой юрл такая реакция.

выложи сюда минимальный пример, в котором ошибка повторяется


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 13:22
попробуй request не хранить полем класса, а создавать прямо перед выполнением запроса
не получилось


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 13:28
Да, стоит. Проблема вы том, что после первого запроса - на любой юрл такая реакция.

выложи сюда минимальный пример, в котором ошибка повторяется
Такой?


Название: Re: QNetworkAccessManager
Отправлено: mutineer от Апрель 08, 2012, 13:34
Да, стоит. Проблема вы том, что после первого запроса - на любой юрл такая реакция.

выложи сюда минимальный пример, в котором ошибка повторяется
Такой?

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


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 13:49
Да, стоит. Проблема вы том, что после первого запроса - на любой юрл такая реакция.

выложи сюда минимальный пример, в котором ошибка повторяется
Такой?

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


Название: Re: QNetworkAccessManager
Отправлено: mutineer от Апрель 08, 2012, 13:58
.pro файл видимо религия непозволила выложить...

беглый осмотр показал:
первое нажатие - getUrl вызывается один раз
второе нажатие - getUrl вызывается два раза
третье нажатие - getUrl вызывается три раза
и так далее

З.Ы. QWebView не хочешь использовать для отображения страницы?

З.Ы.Ы перенес connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(getUrl(QNetworkReply*))); в конструктор окна - все стало нормально. странно


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 14:08
.pro файл видимо религия непозволила выложить...

беглый осмотр показал:
первое нажатие - getUrl вызывается один раз
второе нажатие - getUrl вызывается два раза
третье нажатие - getUrl вызывается три раза
и так далее

З.Ы. QWebView не хочешь использовать для отображения страницы?

З.Ы.Ы перенес connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(getUrl(QNetworkReply*))); в конструктор окна - все стало нормально. странно
Спасибо!  сейчас попробую в полной версии
P.S. QWebView  ненужен, я просто  для видимости себе вывожу, программа вообще другим занимается)))


Название: Re: QNetworkAccessManager
Отправлено: Trollolo от Апрель 08, 2012, 14:12
Да , работает! Всем спасибо за помощь!!! ;D


Название: Re: QNetworkAccessManager[РЕШЕНО]
Отправлено: mutineer от Апрель 08, 2012, 14:59
странно, мне казалось что повторный коннект не должен ничего делать

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