syncchangning.cpp 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "syncchangning.h"
  2. //#define SyncDbg
  3. SyncChangning::SyncChangning(QObject *parent, QString urlstr) :
  4. QObject(parent)
  5. {
  6. this->Url = QUrl(urlstr);
  7. CurrentIdx = 0;
  8. isworking = false;
  9. SyncDataList.clear();
  10. timer = new QTimer(this);
  11. connect(timer,SIGNAL(timeout()),this,SLOT(time_out()));
  12. accessManager = new QNetworkAccessManager(this);
  13. connect(accessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(query_finishedSlot(QNetworkReply*)));
  14. }
  15. void SyncChangning::start()
  16. {
  17. timer->start(300);
  18. }
  19. void SyncChangning::appendData(SyncData data)
  20. {
  21. SyncDataList.append(data);
  22. }
  23. //void SyncChangning::reply_timeout()
  24. //{
  25. // isworking = false;
  26. //#ifdef SyncDbg
  27. // emit syncdata(QString("%1 reply timeout()").arg(CurrentIdx),false);
  28. //#endif
  29. //}
  30. void SyncChangning::query_finishedSlot(QNetworkReply *reply)
  31. {
  32. if(reply->error()==QNetworkReply::NoError){
  33. QByteArray ret = reply->readAll();
  34. #ifdef SyncDbg
  35. if(ret.indexOf("8000")<0){
  36. emit syncdata(QString("%1) %2").arg(CurrentIdx).arg(QString::fromUtf8(ret)),false);
  37. }else{
  38. emit syncdata(QString::fromUtf8(ret),false);
  39. }
  40. #endif
  41. }else{
  42. #ifdef SyncDbg
  43. emit syncdata(QString("%1) reply error: %2").arg(CurrentIdx).arg(reply->error()),false);
  44. #endif
  45. }
  46. CurrentIdx = 0;
  47. reply->deleteLater();
  48. isworking = false;
  49. time_out();
  50. }
  51. void SyncChangning::time_out()
  52. {
  53. if(SyncDataList.length()>0){
  54. if(!isworking){
  55. isworking = true;
  56. SyncData data = SyncDataList.first();
  57. SyncDataList.removeFirst();
  58. CurrentIdx = data.Idx;
  59. QString rep = QString::fromUtf8("{\"appKey\":\"4464378a1152474f82d0025e1bc847b3\",\"secret\":\"88fb10459cad484abeec27c576c853d8\",\"devNum\":\"%1\",\"power\":%2,\"fault\":%3,\"start\":%4,\"run\":%5,\"press\":%6,\"quantity\":%7,\"signal\":%8,\"status\":%9}")
  60. .arg(data.DevNum).arg(data.Power).arg(data.Fault).arg(data.Start).arg(data.Run).arg(data.Press).arg(data.Quantity).arg(data.Signal).arg(data.Sta);
  61. QNetworkRequest *req = new QNetworkRequest(Url);
  62. req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
  63. req->setRawHeader("Accept","text/html, application/xhtml+xml, */*");
  64. req->setRawHeader("Connection","keep-alive");
  65. req->setRawHeader("Cache-Control"," no-cache");
  66. req->setRawHeader("Content-Length",QString("%1").arg(rep.length()).toUtf8());
  67. #ifdef SyncDbg
  68. emit syncdata(rep,true);
  69. #endif
  70. // QNetworkReply *reply =
  71. accessManager->post(*req,rep.toUtf8());
  72. // QReplyTimeout *pTimeout = new QReplyTimeout(reply,3000);
  73. // connect(pTimeout,SIGNAL(net_timeout()),this,SLOT(reply_timeout()));
  74. }
  75. }
  76. }