2
在Qt5的幫助下,通過POST請求將JSON文件發送到服務器時有點問題。我給你一張我的程序:POST在Qt5中發送JSON文件的請求
#include <iostream>
#include <QCoreApplication>
#include <QFile>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QUrl>
#include <QCommandLineParser>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QByteArray jsonDocument("{}");
QUrl url("http://validate.jsontest.com/?json=");
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QNetworkAccessManager manager;
QNetworkReply* reply = manager.post(request, jsonDocument);
while(!reply->isFinished()) {
a.processEvents();
}
std::cout << "Ok, Server response : " << response.toStdString() << std::endl;
return 0;
}
由於這種不上,我要送我的文件,我測試我的代碼就像valide.jsontest.com在測試服務器上的服務器上運行 - >當你發送一個json到服務器時,它會回答你的json是否有效。
但我實際的代碼我收到此:
Ok, Server response : {
"error": "A JSONObject text must begin with '{' at 1 [character 2 line 1]",
"object_or_array": "object",
"error_info": "This error came from the org.json reference parser.",
"validate": false
}
所以,如果我發送相同的最小JSON對象{}用捲成那樣:
curl -X POST -d "json={}" http://validate.jsontest.com
答案在邏輯上是好的:
{
"object_or_array": "object",
"empty": true,
"parse_time_nanoseconds": 10874,
"validate": true,
"size": 0
}
我想我錯過了一段理解我的Qt代碼或POST請求的機制。