首页 > 解决方案 > QNetworkReply::RemoteHostClosedError

问题描述

我正在学习 Github API,并想通过 Qt 在 github 上创建一个问题。

但是,当我提交问题时,“调试控制台”说

QNetworkReply::RemoteHostClosedError

(我发现了错误)。

我不知道为什么,请帮助我!

Github 上的代码

void MainWindow::on_pushButton_2_clicked()
{
    QString id = ui->ID_Send->text();
    QJsonObject JJ;
    QJsonDocument jd;
    JJ["title"] = ui->Title->text();
    JJ["body"] = ui->Comment->toPlainText();
    QHttpMultiPart *part = new QHttpMultiPart(QHttpMultiPart::FormDataType);
    QHttpPart info;
    info.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/json"));
    jd.setObject(JJ);
    info.setBody(jd.toJson());
    part->append(info);

    QNetworkRequest request;
    qDebug()<<"https://api.github.com/repos/MoyuSteve/Comment/issues?client_id="+
              client_id+"&client_secret="+client_secret;
    request.setUrl(QUrl("https://api.github.com/repos/MoyuSteve/Comment/issues?client_id="+
                        client_id+"&client_secret="+client_secret));
    QNetworkReply* reply = manager->post(request,part);
    QObject::connect(reply, &QNetworkReply::finished, [reply, this] () {
        if (reply->error() == QNetworkReply::NoError) {
            ui->status->setText("ok");
        } else {
            ui->status->setText("failed");
            qDebug()<<reply->error();
        }
        reply->deleteLater();
    });
}

标签: qtgithub-apiqtnetwork

解决方案


您可以在这个答案这里举个例子。

与您的代码相比,它将标头设置为"application/json".
它使用QNetworkAccessManager发送网络请求和接收回复。

QUrl url("https://api.github.com/repos/" + owner +"/" + project + "/tags");
qInfo() << url.toString();
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QNetworkAccessManager nam;
QNetworkReply * reply = nam.get(request);

推荐阅读