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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Post и get запросы, хедеры  (Прочитано 16281 раз)
Cowcancry
Гость
« : Март 20, 2010, 23:16 »

Где можно про это поподробнее прочитать? И очень желательно с примерами, т.к. говорится 0 уровень в этом..
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #1 : Март 20, 2010, 23:25 »

Ты не поверишь Улыбающийся

http://lmgtfy.com/?q=Http вот рас
http://ru.wikipedia.org/wiki/HTTP вот два
Записан
Cowcancry
Гость
« Ответ #2 : Март 21, 2010, 20:28 »

Это всё замечательно, но мне нужен простейший пример на Qt
Записан
SimpleSunny
Гость
« Ответ #3 : Март 21, 2010, 20:50 »

ТЫ не поверишь, но в документации (QNetworkAccessManager)

Код:
 QNetworkAccessManager *manager = new QNetworkAccessManager(this);
 connect(manager, SIGNAL(finished(QNetworkReply*)),
         this, SLOT(replyFinished(QNetworkReply*)));

 manager->get(QNetworkRequest(QUrl("http://qt.nokia.com")));
Записан
Cowcancry
Гость
« Ответ #4 : Март 22, 2010, 00:44 »

Я конечно понимаю, что это весело поиздеваться... Но я читал это и вот что получается..
Когда я
Код:
#include <QNetworkAccessManager>
выскакивает : error C2440: '<function-style-cast>' : cannot convert from 'const char [20]' to 'QUrl'
                     error C2514: 'QNetworkRequest' : class has no constructors
НО если я добавляю
Код:
#include <QNetworkRequest>
10 ошибок вида : 1>: error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QNetworkRequest::~QNetworkRequest(void)" (__imp_??1QNetworkRequest@@QAE@XZ) referenced in function "public: void __thiscall First::LoadSite(void)" (?LoadSite@First@@QAEXXZ)

Помогите разобраться...


Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Март 22, 2010, 00:59 »

Ты подключил сетевой модуль в своём pro-файле?

Цитировать
QT += network
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Cowcancry
Гость
« Ответ #6 : Март 22, 2010, 15:35 »

Что за pro файл?
Я Компилю через VS2008
------
Спасибо сам нашёл ответ Улыбающийся))
« Последнее редактирование: Март 22, 2010, 15:55 от Cowcancry » Записан
Cowcancry
Гость
« Ответ #7 : Март 22, 2010, 15:54 »

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
 connect(manager, SIGNAL(finished(QNetworkReply*)),
         this, SLOT(replyFinished(QNetworkReply*)));

 QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://qt.nokia.com")));

В конце получается, вся информация хранится в reply, но как её можно вывести в Label например?
« Последнее редактирование: Март 22, 2010, 16:42 от Cowcancry » Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #8 : Март 22, 2010, 16:49 »

Кури маны дальше, у тебя есть слот replyFinished(QNetworkReply*) и в нем тебе нужно будет проверять не было ли ошибок при выполнении запроса и возвращения результата, в этом слоте в экземпляре класса QNetworkReply будет храниться все что тебе нужно, читай ассистент Улыбающийся
Записан
Cowcancry
Гость
« Ответ #9 : Март 23, 2010, 17:09 »

Вот к примеру я хочу сделать программу для ручного голосования на l2top.ru Т.к тут используются все запросы, cookie..
Народ, подскажите как составить правильно post ... Где поля:
cc9dfecb   // Это поле имеет "как будто" каждый раз новое имя
name
referer   //http://l2top.ru/vote/3118/
sec_referer   40059b144bfc1cdac2e7f35669724998d23598d5
voteOk   ok
« Последнее редактирование: Март 23, 2010, 19:25 от Cowcancry » Записан
Cowcancry
Гость
« Ответ #10 : Март 23, 2010, 22:45 »

Код:
void First::Send()
{
QNetworkAccessManager *man = new QNetworkAccessManager(this);
connect(man, SIGNAL(finished(QNetworkReply*)),this, SLOT(repFinish(QNetworkReply*)));
QNetworkRequest PostRequest;
PostRequest.setUrl((QUrl)"http://l2top.ru/vote/54/");
QString param = "referer=http%3A%2F%2Fl2top.ru%2Fvote%2F3118%2F&sec_referer=40059b144bfc1cdac2e7f35669724998d23598d5&voteOk=ok&f5c5f905="+ui.captchaLine->text()+"&name=Cowcancry";
QByteArray postz = param.toUtf8();
man->post(PostRequest,postz);


}
void First::repFinish(QNetworkReply* reply)
{
QString otvet;
switch (reply->error())
{
case 0: otvet = QString::fromUtf8(reply->readAll());
ui.myLabel -> setText(otvet);break;
default: ui.statusLabel->setText("Else Error");break;
}
reply->deleteLater();


}
Пытаюсь послать запрос с помощью   функции Send, но т.к. в Label оно пытается отобразить страницу, видно что оно возвращает Error...
Записан
voronElf
Гость
« Ответ #11 : Март 24, 2010, 06:49 »

в слоте при ошибке из reply вытащи на лабельку номер и описание ошибки, понятнее должно стать.

QNetworkAccessManager для каждого запроса свой создавать не стоит, его один делают на все запросы (я полем класса его делаю)
Записан
Cowcancry
Гость
« Ответ #12 : Март 24, 2010, 16:04 »

Я ошибся, ошибки как раз нету... Только я никак не могу понять, как ПРАВИЛЬНО получить капчу, ведь я обращаюсь на прямую к функциям getimg.php и 4na.php, которая возвращает рисунок...
И если я шлю post с ответом, то пишет что каптча не правильная...
Как правильно получить две капчи?
Записан
voronElf
Гость
« Ответ #13 : Март 25, 2010, 08:34 »

ну получаешь ты рисунок, а куда ты шлешь пост с ответом ? что это за ответ и откуда он взялся ? и в чем задача то именно здесь ? поподробнее ...
Записан
Cowcancry
Гость
« Ответ #14 : Март 25, 2010, 16:28 »

Есть сайт с голосованием l2top.ru, но там двойная капча
Я делаю GET  //http://l2top.ru/vote/54/ чтобы получить Cookie.
Потом делаю два GET'a с установленными куками, чтобы получить капчу...
Но когда я посылаю POST с ответом на капчу, мне возвращает что она не верна.
Меня смущает то, что при GET  //http://l2top.ru/vote/54/ каждый раз новое поле для ввода ответа с капчи, и выглядить оно так:
Код:
<!--// <input name='2fed8414' type='text' value='' class='num2' maxlength='14'> //--><!--// <input name='ed5d65d5' type='text' value='' class='num2' maxlength='14'> //--><!--// <input name='a3c4b058' type='text' value='' class='num2' maxlength='14'> //--><input name='e73ea100' type='text' value='' class='num2' maxlength='14'>
Их там больше гораздо...
+Обращение к капчам идёт /getimg.php?"+Math.random()+", хотя я посылаю GET по /getimg.php?54  (к примеру)
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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