【发布时间】:2019-05-04 01:25:48
【问题描述】:
我必须使用发布到 google 脚本(见下文),我希望在脚本结束时收到反馈,表明一切正常。
function doPost(e){
var idm = e.parameter.idm;
var sheet_purchaseHistory = SpreadsheetApp.getActive().getSheetByName('purchaseHistory');
var date = new Date();
var time = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss');
sheet_purchaseHistory.getRange(sheet_purchaseHistory.getLastRow()+1, 1).setValue(time);
sheet_purchaseHistory.getRange(sheet_purchaseHistory.getLastRow(), 2).setValue(mailadress);
return ContentService.createTextOutput(JSON.stringify({'status': 'success'})).setMimeType(ContentService.MimeType.JSON);
}
在我的 cpp 代码中,我有:
标题 (.h)
QNetworkRequest request;
QNetworkAccessManager *manager;
QByteArray ba;
QNetworkReply* reply;
构造函数:
manager = new QNetworkAccessManager(this); // I tried with and without parsing the (this)
request.setUrl(QUrl("https://script.google.com/macros/s/AKfycbzhHBpZ8jMfa2bwE_A0lQJNqOzVl894dcjkch_-0mNC6EX9usn1/exec"));
函数内部:
manager->setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QUrlQuery postData;
postData.addQueryItem("idm", "string");
QNetworkReply *rp = manager->post(request,postData.toString(QUrl::FullyEncoded).toUtf8());
QEventLoop loop;
connect(rp, SIGNAL(finished()), &loop, SLOT(quit())); //readready SIGNAL also tried
loop.exec();
QByteArray data = rp->readAll();
QString dataReply(data);
qDebug() << dataReply;
发生的情况是我总是收到 null。我已经尝试了几种组合,例如不同的信号(readyread、finished...),使用 QUrlQuery 和 ByteArray,设置不同的标题,但没有成功。
我还注意到,当我的参数在我的请求 (https://address?parameters=string) 中时,我可以收到返回。 (在这种情况下,通过从“postdate”中删除参数并将它们包含在 post“req”中
QNetworkReply *rep = man->post(req,postdata);
RESTESTTEST 的打印:我尝试使用https://resttesttest.com/ 发布并且它工作正常。它给出了以下 cmets
有人可以帮帮我吗?
【问题讨论】:
-
除了resttesttest.com的测试图像之外,您还可以提供url等来测试您的问题
-
我刚刚更新了帖子! :-)
-
你改变了结果吗?以前,你是 {"okay": value} 现在它是 "OK"
标签: c++ qt post qnetworkaccessmanager qnetworkreply