【无标题】Qt中“Http get命令使用”及“\\u8576\\3456“中正常显示

.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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值