/*********************** DNS_Queryer ************************************/ void HTTP_Requester::Handle_DNS_Response( const char * szDomain,const char ** ppIPList,unsigned int nIPNum) { if ( nIPNum==0 || ppIPList==0 ) return ; REQUEST_LIST & request_list = m_DNSQueryingList[szDomain]; REQUEST_LIST::iterator it = request_list.begin(); for ( ;it!=request_list.end();++it ) { REQUEST & request = *it; request.m_ServerIP = ppIPList[0]; SendHTTPRequest(*it); } m_DNSQueryingList.erase(szDomain); }
/* Update item value */ void updateItemValue(ButtonSettings *buttonSettings, char *data) { /* update only if the lenght of all fields if larger than zero */ if (strlen((char *)&buttonSettings->itemUpdateHost) == 0 || strlen((char *)&buttonSettings->itemUpdatePort) == 0 || strlen((char *)&buttonSettings->itemUpdateMethod) == 0 || strlen((char *)&buttonSettings->itemUpdateUrl) == 0) return; /* create a new HTTP Request object */ HTTPRequest httpRequest; strcpypgm2ram((char *)&httpRequest.data, data); strcpy((char *)&httpRequest.method, (char *)&buttonSettings->itemUpdateMethod); strcpy((char *)&httpRequest.host, (char *)&buttonSettings->itemUpdateHost); strcpy((char *)&httpRequest.port, (char *)&buttonSettings->itemUpdatePort); strcpy((char *)&httpRequest.itemUrl, (char *)&buttonSettings->itemUpdateUrl); /* Add the HTTP Request to the queue */ SendHTTPRequest(&httpRequest, &itemUpdateQueue); }
bool HTTP_Requester::Request( const std::string & url,HTTP_VERSION httpver,__int64 range_begin,__int64 range_end,handle handler) { std::string host; std::string trim_url; unsigned short port = 0; if ( !GetURLHostName(url,host,port,trim_url)) { ErrorLn("Get host name from url failed! Please ensure format of the url is valid!" << url); return false; } REQUEST request; request.m_szURL = trim_url; request.m_Version = httpver; request.m_RangeBegin = range_begin; request.m_RangeEnd = range_end; request.m_ServerPort = port; request.m_pHandler = handler; request.m_ServerHost=host; // 是域名 if ( isalpha(host.at(0))) { m_DNSQueryingList[host].push_back(request); if ( m_DNSQueryingList[host].size()==1 ) DNS_Resolver::getInstance().DNS_Query(host,this); }else { request.m_ServerIP = host; if ( inet_addr(request.m_ServerIP.c_str())==INADDR_NONE) { ErrorLn("Get host name from url failed! Please ensure format of the url is valid!" << url); return false; } SendHTTPRequest(request); } return true; }