Qt 使用curl POST中文到python服务器

    QLineEdit *nameEdit = new QLineEdit(this);
    QPushButton *btn = new QPushButton(QStringLiteral("确定"),this);
    btn->move(nameEdit->rect().bottomLeft());
    connect(btn,&QPushButton::clicked,[nameEdit]{
        CURL *curl;
        CURLcode res;
        curl = curl_easy_init();
        if(curl){
            struct curl_slist *headers = nullptr;//Content-Type:application/json;charset=UTF-8
            headers = curl_slist_append(headers,"Content-Type:application/json;charset=UTF-8");
//            headers = curl_slist_append(headers,"Accept-Encoding:gzip, deflate");
//            headers = curl_slist_append(headers,"Accept-Language:zh-CN,en,*");
//            headers = curl_slist_append(headers,"User-Agent:Mozilla/5.0");
//            headers = curl_slist_append(headers, "Expect:"); //解除分1024个字节分次发送的限制
            curl_easy_setopt(curl,CURLOPT_HTTPHEADER,headers);
            curl_easy_setopt(curl, CURLOPT_POST, 1); //作用POST
            curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:8000");   // 指定url

            QString str = nameEdit->text();
            std::string arr = str.toStdString(); //这一步必须有,不能用连调的形式 str.toStdString().data()是不行的;
            curl_easy_setopt(curl, CURLOPT_POSTFIELDS, arr.data());    // 指定post内容,也可以是arr.c_str()
            curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, arr.size());
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, response);
            QByteArray responseArr;
            curl_easy_setopt(curl,CURLOPT_WRITEDATA, &responseArr);
            curl_easy_setopt(curl, CURLOPT_TIMEOUT,3);
            res = curl_easy_perform(curl);
            if(res != CURLE_OK){
                qDebug() << curl_easy_strerror(res);
            }else{
                qDebug() << "Curl received " << QString(responseArr);
                QJsonDocument jsDoc;
                QJsonParseError jserror;
                jsDoc = QJsonDocument::fromJson(responseArr,&jserror);
                QJsonObject jsObj = jsDoc.object();
                qDebug() << jsObj["res"].toString();
            }
            curl_easy_cleanup(curl);
        }
    });

python服务器端需要使用 

# -*- coding: utf-8 -*-

UTF-8编码



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值