【问题标题】:QNetworkAccessManager send data incompleteQNetworkAccessManager 发送数据不完整
【发布时间】:2021-03-26 11:31:30
【问题描述】:

我在 Windows 中遇到 QNetworkAccessManager 问题。我编写了以下代码来提交请求,它在 ubuntu 上完美运行,但在 Windows 上仅发送 16384 字节!似乎请求只执行一次并冻结。

QString concatenated = username + ":" + pass;
QByteArray hash = concatenated.toLocal8Bit().toBase64();
QString headerData = "Basic " + hash;
QNetworkRequest request = QNetworkRequest(QUrl(baseURL));

request.setRawHeader("Authorization", headerData.toLocal8Bit());
request.setRawHeader("Content-Type", "application/json");

QNetworkReply * reply = nam->post(request,data);
connect(reply,&QNetworkReply::uploadProgress,this,&myClass::uploadProgress);

uploadProgress方法中:

qDebug() << sent << " " << total;
if(total && sent){
    int result = (sent*100)/total;
    emit uploaded(result);
}

输出:

16384 632054 // AND EVERY THINGS STOP UNTIL I GET QNetworkReply::RemoteHostClosedError ERROR CODE

【问题讨论】:

标签: qt qnetworkaccessmanager


【解决方案1】:

两天后,我终于找到了原因!这是因为我直接在uploadProgress 中发出信号!我更改了下面的uploadProgress 代码,现在它可以完美运行了!

qDebug() << sent << " " << total;
if(total && sent){
    int result = (sent*100)/total;
    QTimer::singleShot(5,[this,result](){
       emit uploaded(result);   
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多