简体   繁体   English

QNetworkReply::RemoteHostClosedError

[英]QNetworkReply::RemoteHostClosedError

I was learning the Github API and wanted to create an Issue on github by Qt.我正在学习 Github API 并想在 github 上由 ZE8801102A40AD89DDFCFDCAEZ00 创建一个问题。

But, when I submit my Issue, the "Debug Console" said但是,当我提交问题时,“调试控制台”说

QNetworkReply::RemoteHostClosedError

(I catched error). (我发现了错误)。

I don't know why, please help me!我不知道为什么,请帮助我!

Code on Github : 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();
    });
}

You can take example in this answer or here .您可以在这个答案这里举个例子。

Compared to your code, it sets the header to "application/json" .与您的代码相比,它将 header 设置为"application/json"
And it uses a QNetworkAccessManager to send network requests and receive replies.它使用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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM