4. 发送http请求
4.1 拷贝mynetworkobject.cpp 和 mynetworkobject.h 到你工程中
(ps: 这两个文件在网上找的,本人有修改)
4.2 在头文件中添加 #include “mynetworkobject.h”
// 本人是在mainwindow.h 中添加(以下无特别说明,均以本demo为例)
#include "mynetworkobject.h"
4.3 在mainwindow.h定义一个networkObj变量
//在public中
MyNetworkObject *networkObj;
4.4 在mainwindow.h添加一个请求成功和失败的方法。
public slots:
void requestFail(QString str); //发送“失败信号”时,触发该方法
void requestSuccess(QString str);//发送“成功信号”时,触发该方法
};
4.5 并在mainwindow.cpp实现该两个槽函数
void MainWindow::requestFail(QString str)
{
qDebug() << "----------requestFail-------------";
qDebug() << str;
}
void MainWindow::requestSuccess(QString str)
{
qDebug() << "----------requestSuccess-------------";
qDebug() << str;
}
4.6 在mainwindow.cpp 的构造函数中添加
networkObj = new MyNetworkObject(); //创建个网络对象
connect(networkObj,SIGNAL(requestSuccessSignal(QString)),this,SLOT(requestSuccess(QString))); //请求成功信号连接请求成功方法
connect(networkObj,SIGNAL(requestFailSignal(QString)),this,SLOT(requestFail(QString))); //失败
QUrl url("http://1.aosik.applinzi.com/demo/api/getUuid.php"); //请求地址
networkObj->get(url); //发送get请求
注:这两个信号在mynetworkobject.h头文件中,自己定义的。名称可以改,但是记得其他用到这个信号的地方也要一起改哈
// 添加两个信号
signals:
void requestFailSignal(QString str); //请求失败时,发送这个信号
void requestSuccessSignal(QString str); //请求成功时,发送这个信号
4.7 在工程的pro文件中添加 QT += network
QT += network
4.8 在工程的pro文件中的SOURCES添加 mynetworkobject.cpp,HEADERS添加mynetworkobject.h. (ps: 记得在上一句的后面加个反斜杠\哦。切记切记,按照它的书写规则来。)
SOURCES += main.cpp\
mainwindow.cpp\
mynetworkobject.cpp
HEADERS += mainwindow.h\
mynetworkobject.h
FORMS += mainwindow.ui
测试一下,重新构建,看工程里有没有关联上这两个文件。没有则表示失败了。仔细检查下。
4.9 这一步要是你没有改我写的信号名,就不用改。
if(reply->error() == QNetworkReply::NoError) {
qDebug()<<"NoError";
QByteArray buffer = reply->readAll();
dataStr = QString::fromUtf8(buffer);
emit requestSuccessSignal(dataStr); //此处触发成功信号
} else {
emit requestFailSignal(reply->errorString()); //此处触发失败信号
}
reply->deleteLater();
接下来我们一起测试一下get请求
以下是log信息,完美!
调试开始
get QUrl( "http://1.aosik.applinzi.com/demo/api/getUuid.php" )
"HttpStatusCodeAttribute = 200"
"HttpReasonPhraseAttribute = OK"
NoError
----------requestSuccess-------------
"{"uuid":"123456789"}"
我拔掉网线测试下
调试开始
get QUrl( "http://1.aosik.applinzi.com/demo/api/getUuid.php" )
"HttpStatusCodeAttribute = "
"HttpReasonPhraseAttribute = "
----------requestFail-------------
"Host 1.aosik.applinzi.com not found"
霍霍,可以咯~~~
附上那个测试接口的php代码
<?php
/**
* User: WiFi
* Date: 2018/03/05
* Time: 09:23
*/
$data = array(
'uuid' => '123456789'
);
//$data = 123456789;
$data = json_encode($data);
echo $data;