#include <QtCore/QString>
#include <QtDebug>
#include "MainWindow.h"
#include <QTime>
#include <QtGui>
MainWindow::MainWindow()
{
ui = new Ui::MainWindow;
ui->setupUi(this);
http = new QHttp();
http->setObjectName("http");
connect(http, SIGNAL(done(bool)), this, SLOT(on_http_done(bool)));
connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(on_http_requestFinished(int, bool)));
ui->hostlineEdit->setText("192.168.1.104");
ui->datelineEdit->setText("user_name=111&state=true");
ui->pathlineEdit->setText("/user_data/send_closed.php");
this->r_ok = false;
}
MainWindow::~MainWindow()
{
/*
file->close();
delete file;
*/
delete http;
}
void MainWindow::on_http_done(bool error)
{
if (error)
{
qDebug() << http->errorString() << "\n";
}
else
{
qDebug() << "Session finished successfully\n";
//buffer.close();
httptext = http->readAll(); //得到返回数据
int sec = this->t->msec();
qDebug() << "Received Size: " << httptext.count() << "\n"; //打印出来
qDebug()<<"the all time:"<<sec<<"ms";
QString time_str;
time_str.setNum(sec);
this->ui->label_5->setText(time_str + "ms");
QString strSource(httptext);//转换成字符串
ui->TextEditHttp->setPlainText(strSource);//显示在白布上
}
}
void MainWindow::on_http_requestFinished(int id, bool error)
{
qDebug() << id <<" Request Finished\n";
if (error)
{
qDebug() << "with errors\n";
qDebug() << http->errorString() << "\n";
}
else
{
qDebug() << " successfully \n";
this->r_ok = true;
}
}
void MainWindow::on_PushButtonPost_clicked()
{
QString data = this->ui->datelineEdit->text();//"user_name=111&pawd=111"
qDebug() << "Post Data: " << data << "\n";
QString get_h = "192.168.1.110";
http->setHost(get_h);
QString get_p = this->ui->pathlineEdit->text();//"/user_data/check.php"
// http->post(get_p, data.toUtf8());
http->get(get_p);
QHttpRequestHeader header("POST",get_p) ;
header.setValue("Host",get_h) ;
header.setContentType("application/x-www-form-urlencoded");
// http->request(header, data.toUtf8()) ;
t = new QTime();
t->start();
}
void MainWindow::closeEvent(QCloseEvent *event)
{
int re = QMessageBox::information(this,tr("信息"),tr("are you sure to close?"),QMessageBox::Cancel,QMessageBox::Ok);
switch(re)
{
case QMessageBox::Ok:
{
QString data = this->ui->datelineEdit->text();//"user_name=111&pawd=111"
qDebug() << "Post Data: " << data << "\n";
QString get_h = "192.168.1.110";
http->setHost(get_h);
QString get_p = this->ui->pathlineEdit->text();//"/user_data/check.php"
http->post(get_p, data.toUtf8());
// http->get(get_p);
QHttpRequestHeader header("POST",get_p) ;
header.setValue("Host",get_h) ;
header.setContentType("application/x-www-form-urlencoded");
// http->request(header, data.toUtf8()) ;
if(this->r_ok)
event->accept();
break;
}
case QMessageBox::Cancel:
event->ignore();
break;
default:
break;
}
}
我在on_http_requestFinished中加了个bool变量来判断,但是调试信息中:
1 Request Finished
successfully
2 Request Finished
with errors
"Request aborted"
"Request aborted"
只要有一次成功就退出了,也是还没到发完就退出了,大哥麻烦详细点,谢谢拉