//发送HTTP请求 //IsPost: 是否为发送 //url: URL字符串 //req: HTTP请求的结构体 //返回值: 1、成功 0、失 int _XHTTPRequest::sendRequest(_XBool IsPost,char *url,_XHTTPRequestStruct &req) { int i,rtn; char* buffer; if(req.headerReceive != NULL) free(req.headerSend); if(req.message != NULL) free(req.message); req.messageLength = 0; if(IsPost) {//发送 i = strlen(req.headerSend); buffer = (char*) malloc(i+1); if(buffer != NULL) strcpy(buffer, req.headerSend); //释放内存空间 free(req.headerSend); rtn = sendHTTP(url,"Content-Type: application/x-www-form-urlencoded\r\n", (unsigned char*)buffer,i,&req); free(buffer); }else {//接收 rtn = sendHTTP(url,NULL,NULL,0,&req); } if(rtn != 0) return 1;//将数据输出 else return 0; }
char* MtkHttpClient::send(const char* request, const char* serverUrl, int port) { // TODO: probably not the best way to detect protocol... switch(port) { case 80: return sendHTTP(request, serverUrl, port); case 443: return sendHTTPS(request, serverUrl, port); default: return sendHTTP(request, serverUrl, port); } }
int main() { int i=0; Init(); init_port(); while(1) { sendHTTP(GET,NULL); delay(1000); sendHTTP(POST,""); delay(1000); } return 0; }
void Stats::initialExec() { if(trigger()) { QTimer::singleShot(0,this, SLOT(sendHTTP())); } }
Stats::Stats() : QObject() , _log(Logger::getInstance("STATS")) , _hyperion(Hyperion::getInstance()) { // generate hash foreach(QNetworkInterface interface, QNetworkInterface::allInterfaces()) { if (!(interface.flags() & QNetworkInterface::IsLoopBack)) { _hyperion->id = QString(QCryptographicHash::hash(interface.hardwareAddress().toLocal8Bit().append(_hyperion->getConfigFileName().toLocal8Bit()),QCryptographicHash::Sha1).toHex()); _hash = QString(QCryptographicHash::hash(interface.hardwareAddress().toLocal8Bit(),QCryptographicHash::Sha1).toHex()); break; } } // stop reporting if not found if(_hash.isEmpty()) { Warning(_log, "No interface found, abort"); // fallback id _hyperion->id = QString(QCryptographicHash::hash(_hyperion->getConfigFileName().toLocal8Bit(),QCryptographicHash::Sha1).toHex()); return; } // prepare content QJsonObject config = _hyperion->getConfig(); SysInfo::HyperionSysInfo data = SysInfo::get(); QJsonObject system; system["kType" ] = data.kernelType; system["arch" ] = data.architecture; system["pType" ] = data.productType; system["pVersion" ] = data.productVersion; system["pName" ] = data.prettyName; system["version" ] = QString(HYPERION_VERSION); system["device" ] = LedDevice::activeDevice(); system["id" ] = _hyperion->id; system["hw_id" ] = _hash; system["ledCount" ] = QString::number(Hyperion::getInstance()->getLedCount()); system["comp_sm" ] = config["smoothing"].toObject().take("enable"); system["comp_bb" ] = config["blackborderdetector"].toObject().take("enable"); system["comp_fw" ] = config["forwarder"].toObject().take("enable"); system["comp_udpl" ] = config["udpListener"].toObject().take("enable"); system["comp_bobl" ] = config["boblightServer"].toObject().take("enable"); system["comp_pc" ] = config["framegrabber"].toObject().take("enable"); system["comp_uc" ] = config["grabberV4L2"].toArray().at(0).toObject().take("enable"); QJsonDocument doc(system); _ba = doc.toJson(); // QNetworkRequest Header _req.setRawHeader("Content-Type", "application/json"); _req.setRawHeader("Authorization", "Basic SHlwZXJpb25YbDQ5MlZrcXA6ZDQxZDhjZDk4ZjAwYjIw"); connect(&_mgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(resolveReply(QNetworkReply*))); // 7 days interval QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(sendHTTP())); timer->start(604800000); //delay initial check QTimer::singleShot(60000, this, SLOT(initialExec())); }