2
我正在開發一個項目,要求我將JSON請求發佈到API服務器,然後從服務器接收數據。然而,我無法讓它工作。這是我的代碼在Qt 4.7中發佈JSON請求
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QUrl serviceUrl = QUrl("https://www.jusmine.jp/KA/KGBloginCheck");
QNetworkRequest request(serviceUrl);
QJsonObject json;
json.insert("userid","xxxx");
json.insert("userpass","xxxx");
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
request.setHeader(QNetworkRequest::ContentLengthHeader,QByteArray::number(json.size()));
QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
connect(networkManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(serviceRequestFinish(QNetworkReply*)));
networkManager->post(request,QJsonDocument(json).toJson());
}
void MainWindow::serviceRequestFinish(QNetworkReply *rep)
{
QString strReply = (QString)rep->readAll();
qDebug()<<"Test: "<<strReply;
}
運行程序後,我從服務器上得不到任何東西。 (這段代碼是建立在Qt 4.7.0上的,所以我必須使用庫qjson4-master)。我不知道有沒有人可以幫助我解決這個問題。
你確定服務器正在發回任何數據嗎?你能否使用其他工具收到回覆?嘗試添加'qDebug()<< rep->錯誤();'到'serviceRequestFinish'並編輯您的問題與打印的錯誤。 – Mike
加入qDebug()後出現錯誤()<< rep->,程序只打印「0」。正如我在這個網絡API的規範中所看到的,這個API要求我使用「POST HTTP方法」,上下文類型是「application/json」。我不知道上面實現的代碼是否滿足這些要求。 –
如果程序爲'rep-> error()'輸出'0',那麼這意味着['QNetworkReply :: NoError'](https://doc.qt.io/qt-4.8/qnetworkreply.html#NetworkError-enum )。在代碼中,你使用的是POST,並且內容類型頭部被設置爲「application/json」,應該沒有問題。 – Mike