.h文件 class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void replyFinished(QNetworkReply *reply);//刷新的槽
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
void queryTest();//查询
QNetworkAccessManager *manager; //请求句柄
};
.cpp文件
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
manager = new QNetworkAccessManager(this); //新建QNetworkAccessManager对象
connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));//关联信号和槽
}
MainWindow::~MainWindow()
{
delete ui;
}
//查询测试
void MainWindow::queryTest()
{
QNetworkRequest quest;
std::string quest_array="http://183.62.211.178:18080/acrux/produced/lqcHttp.php?ACTION=function&INDEX=api&DATA=[{\"scCode\":\"KC123456789\",\"work\":\"123\",\"sPOrderId\":\"999\",\"checkStaff\":\"6328\",\"manageStaff\":\"6328\",\"result\":\"0\",\"version\":\"1.0\",\"mac\":\"08:00:20:0A:8C:6D\",\"subProject\":\"1,2,3,4,5,6,7,8\"}]";
quest.setUrl(QUrl(quest_array.data()));
quest.setHeader(QNetworkRequest::UserAgentHeader,"RT-Thread ART");
/*发送get网络请求*/
manager->get(quest);
}
inline bool isNumber(char ch){
return (ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f');
}
//函数名:Convert_Unnormal_Unicode
//功能:转化非正常显示的中文UNICODE为正常显示
//参数:QByteArray
//返回值:QString
QString Convert_Unnormal_Unicode(QByteArray content){
QString str="";
for (int i = 0; i + 5 < content.size();){
if((content.at(i) == '\\') && (content.at(i + 1) == 'u') && isNumber(content.at(i + 2)) && isNumber(content.at(i + 3)) && isNumber(content.at(i + 4)) && isNumber(content.at(i + 5)))
{
QChar var = content.mid(i + 2, 4).toInt(0, 16); // 分离出一个unicode字符
str.append(var);
i += 6;
}
else
{
QChar var = content.at(i); // 分离出一个ascii字符
str.append(var);
i++;
}
}
return str;
}
//信号槽接收网络响应,处理接收到的数据
void MainWindow::replyFinished(QNetworkReply *reply)
{
QByteArray content= reply->readAll();
reply->deleteLater(); //销毁请求对象
/
if(!content.isEmpty()){
QString str= Convert_Unnormal_Unicode(content);
str= str.mid(2,str.length()-4);
str=str.replace("\"","");
QStringList strList=str.split(",");
qDebug()<<strList;
}
}
void MainWindow::on_pushButton_clicked()
{
queryTest();
}