void DataServer::send(CloudRequest &request, CloudResponse &response)
{
QNetworkRequest oNetRequest;
oNetRequest.setUrl(QUrl(request.getRequestUrl()));
if(request.getContentType() == ctJson)
oNetRequest.setRawHeader("Content-Type", "application/json");
else if(request.getContentType() == ctXml)
oNetRequest.setRawHeader("Content-Type", "application/xml");
else
oNetRequest.setRawHeader("Content-Type", "application/octet-stream");
if(!m_token.isEmpty())
{
oNetRequest.setRawHeader("Authorization", m_token.toLocal8Bit());
}
oNetRequest.setRawHeader("CLIENTVERSION", ("V1"));
QNetworkAccessManager oNetAccessManager;
QNetworkReply* oNetReply = NULL;
switch (request.getRequestMethod())
{
case rmPut:
oNetReply = oNetAccessManager.put(oNetRequest, *request.getRequestData());
break;
case rmPost:
oNetReply = oNetAccessManager.post(oNetRequest, *request.getRequestData());
break;
case rmGet:
oNetReply = oNetAccessManager.get(oNetRequest);
break;
case rmDelete:
oNetReply = oNetAccessManager.deleteResource(oNetRequest);
break;
default:
break;
}
if(oNetReply ==nullptr)
{
qDebug()<<"send error"<<*request.getRequestData();
QMessageBox::about(nullptr, "错误",QString("发送请求异常").append(*request.getRequestData()));
return;
}
QEventLoop loop;
connect(oNetReply, SIGNAL(finished()), &loop, SLOT(quit()));
int tmpResult =
loop.exec(); //系统运行时间久 在此报错 QThread::start: Failed to create thread (设备不识别此命令。 if(tmpResult !=0)
{
qDebug()<<"创建loop失败 失败码"<<tmpResult;
qDebug()<<"send error"<<*request.getRequestData();;
}
//记录httpCode
int httpsCode = oNetReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
response.setHttpCode(httpsCode);
if(oNetReply->error())
{
response.setIsError(true);
response.setErrorMsg(oNetReply->errorString());
response.setContent(oNetReply->readAll());
}
else
{
response.setContent(oNetReply->readAll());
}
}