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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QHTTP - два запроса  (Прочитано 6940 раз)
zosia
Гость
« : Март 04, 2009, 15:37 »

здравствуйте,

помогите решить вроде бы простую задачу: я хочу послать запрос - получить ответ, и ответ этот послать на другой скрипт для обработки - сново получить ответ

просто послать запрос и получить ответ получилось:

Код
C++ (Qt)
http = new QHttp(this);
connect(ui->getit,SIGNAL(clicked()),this,SLOT(sendrequest()));
connect(http, SIGNAL(done(bool)), this, SLOT(done()));
 
void smnd::sendrequest(){
QString url = QString("/script_one.php?text=something");
 
QHttpRequestHeader header = QHttpRequestHeader("POST", url, 1, 1);
header.setValue("Host", "site.ru");
header.setValue("User-Agent", "Mozilla/5.0");
header.setValue("Accept-Encoding", "deflate");
header.setContentLength(8);
header.setValue("Connection", "Close");
 
http->setHost("site.ru");
http->request(header);
 
}
 
void smnd::done(){
QString text = text.fromUtf8( http->readAll() );
ui->showText->setText(text);
}
 


но вот как послать послученный text на другой скрипт и получить ответ?

пробую сделать два QHttp и отловить каждый сигнал done():
Код
C++ (Qt)
http=new QHttp(this);
anotherhttp=new QHttp(this);
connect(ui->getit,SIGNAL(clicked()),this,SLOT(sendrequest()));
connect(http, SIGNAL(done(bool)), this, SLOT(done()));
connect(anotherhttp, SIGNAL(done(bool)), this, SLOT(another_done()));
 
void smnd::sendrequest(){
// tot je kod
}
void smnd::done(){
 
QString text = text.fromUtf8( http->readAll() );
 
QString url = QString("/script_two.php?text=" + text);
 
QHttpRequestHeader xheader = QHttpRequestHeader("POST", url, 1, 1);
xheader.setValue("Host", "site.ru");
xheader.setValue("User-Agent", "Mozilla/5.0");
xheader.setValue("Accept-Encoding", "deflate");
xheader.setContentLength(text.length());
xheader.setValue("Connection", "Close");
 
anotherhttp->setHost("site.ru");
anotherhttp->request(xheader);
 
}
 
void smnd::another_done(){
QString xtext = xtext.fromUtf8( anotherhttp->readAll() );
ui->showText->setText(xtext);
}
 


обрабатывая два запроса ошибка -
Bad Request
Request header field is missing ':' separator.

либо вообще ничего нету=(
как полученный ответ послать на другой скрипт? и получить так же ответ..
может я не правильно делаю? help me out please
« Последнее редактирование: Март 04, 2009, 15:47 от zosia » Записан
BRE
Гость
« Ответ #1 : Март 04, 2009, 16:01 »

А что за ответ приходит от первого скрипта? Какой точно текст?
Записан
zosia
Гость
« Ответ #2 : Март 04, 2009, 16:07 »

HTML, т.е. страница вида:

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head></head>
<body> текст, ссылки и т.д.</body>
</html>

т.к. я ооочень не понимаю, как обработать в QT html текст, я хочу этот HTML послать на другой скрипт, обработать спокойно в PHP и вернуть в виде XML, чтобы в QT легче было работать..
такая вот проблема(
Записан
ритт
Гость
« Ответ #3 : Март 04, 2009, 16:12 »

а deflate поддерживается или это ради красивости?
Записан
zosia
Гость
« Ответ #4 : Март 04, 2009, 16:21 »

да, поддерживается.
первый ответ приходит всегда, а второй Bad Request(
Записан
Rcus
Гость
« Ответ #5 : Март 04, 2009, 16:40 »

Ну Bad Request и есть
Цитировать
QHttpRequestHeader::QHttpRequestHeader ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 )

Constructs a HTTP request header for the method method, the request-URI path and the protocol-version majorVer and minorVer. The path argument must be properly encoded for an HTTP request.
« Последнее редактирование: Март 04, 2009, 16:52 от Rcus » Записан
BRE
Гость
« Ответ #6 : Март 04, 2009, 16:48 »

А попробуй так:
Код
C++ (Qt)
void smnd::done()
{
QUrl param( http->readAll() );
QString url = QString( "/script_two.php?text=" ) + param.toEncoded();
 
...
 
Записан
zosia
Гость
« Ответ #7 : Март 04, 2009, 16:56 »

ааааа!!! спасибо большое Смеющийся
5 часов мучаюсь, всё надо кодировать
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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