QNetworkReply::NetworkError(ProtocolInvalidOperationError) 它是什么以及如何修复它?

问题描述

我正在尝试向网页发出 POST 请求,但在下面的代码中出现错误

void Webviewmodel::sendPOST(QString url)
{
    qnetworkrequest request(url);
    request.setHeader(qnetworkrequest::ContentTypeHeader,QStringLiteral("application/x-www-form-urlencoded"));
    QByteArray postData;
    postData.append("");
    manager_->post(request,postData);

    connect(manager_,SIGNAL(finished(QNetworkReply *)),this,SLOT(replyFinishedSlot(QNetworkReply *)));
}

void Webviewmodel::replyFinishedSlot(QNetworkReply *reply)
{
    QUrl webReportsUrl("http://...");
    if(reply->error())  <-- **Here I got NetworkReply::NetworkError(ProtocolInvalidOperationError)**
    {
        qDebug() << "Error: ";
        qDebug() << reply->errorString();
        qDebug() << QNetworkReply::NetworkError(reply->error());
        qDebug() << reply->error();
    }
    else
    {
        qDebug() << "no error";
    }
    reply->deleteLater();
}

这是 302 错误,QT 文档中有以下描述:

请求的操作对该协议无效

如何解决

解决方法

当服务器以 400 状态代码(错误请求)或 418 状态代码(我是茶壶)响应时会发生这种情况。

服务器没有正确配置,或者它不希望向该端点发送请求,或者它不喜欢带有空正文的请求。

您可以使用 curl 来验证服务器在发布请求时是否无错误响应。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...