QGeoTiledMapReply *QGeoTileFetcherNokia::getTileImage(const QGeoTileSpec &spec) { // TODO add error detection for if request.connectivityMode() != QGraphicsGeoMap::OnlineMode QString rawRequest = getRequestString(spec); QNetworkRequest netRequest((QUrl(rawRequest))); // The extra pair of parens disambiguates this from a function declaration netRequest.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true); QNetworkReply *netReply = m_networkManager->get(netRequest); QGeoTiledMapReply *mapReply = new QGeoMapReplyNokia(netReply, spec); return mapReply; }
void DataRequest::load(std::string url) { if (url[url.size() - 1] != '?') { url.append("?"); } const char *postData = getRequestString()->getCString(); url.append(postData); CCLog("%s", url.c_str()); CCHttpRequest *pReq = new CCHttpRequest(); pReq->setUrl(url.c_str()); pReq->setRequestType(CCHttpRequest::kHttpPost); pReq->setResponseCallback(this, callfuncND_selector(DataRequest::onHttpRequestCompleteHandler)); pReq->setRequestData(postData, strlen(postData)); std::vector<std::string> headers; headers.push_back("Content-Type: application/json; charset=utf-8"); //pReq->setHeaders(headers); CCHttpClient::getInstance()->send(pReq); pReq->release(); }
QGeoTiledMapReply* QGeoMappingManagerEngineGoogle::getTileImage(const QGeoTiledMapRequest &request) { QString rawRequest = getRequestString(request); QNetworkRequest netRequest = QNetworkRequest(QUrl(rawRequest)); netRequest.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true); netRequest.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); QString ua = QFileInfo(QApplication::applicationFilePath()).fileName(); ua.remove(QChar('"'), Qt::CaseInsensitive); ua += " (Qt"; ua += qVersion(); ua += " QtMobility 1.1 ) google GeoMappingManager"; netRequest.setRawHeader("User-Agent", ua.toAscii()); if (m_nam->cache()) m_nam->cache()->metaData(netRequest.url()).setLastModified(QDateTime::currentDateTime()); QNetworkReply* netReply = m_nam->get(netRequest); QGeoTiledMapReply* mapReply = new QGeoMapReplyGoogle(netReply, request, this); return mapReply; }
QGeoTiledMapReply* QGeoMappingManagerEngineOsm::getTileImage(const QGeoTiledMapRequest &request) { QString rawRequest = getRequestString(request); // qDebug() << "SL:" << rawRequest; QNetworkRequest netRequest = QNetworkRequest(QUrl(rawRequest)); netRequest.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); QString ua = QFileInfo(QApplication::applicationFilePath()).fileName(); ua.remove(QChar('"'), Qt::CaseInsensitive); ua += " (Qt"; ua += qVersion(); ua += " QtMobility 1.1 ) osm GeoSearchManager"; netRequest.setRawHeader("User-Agent", ua.toAscii()); #ifdef USE_NETWORK_CACHE m_cache->metaData(netRequest.url()).setLastModified(QDateTime::currentDateTime()); #endif QNetworkReply* netReply = m_nam->get(netRequest); QGeoTiledMapReply* mapReply = new QGeoMapReplyOsm(netReply, request, this); return mapReply; }
bool CurlHttpClient::execute(const internal::HttpRequest& request, internal::HttpResponse& response) { CURLStatus_ = CURLE_FAILED_INIT; errorBuf_[0] = '\0'; bool retry(false); unsigned retryCount(0); response.clear(); CURL* curl = curl_easy_init(); if (NULL == curl) { return (internal::HttpResponse::HTTP_OK == response.getHttpStatus()); } std::string URI(getRequestString(request)); FREDCPP_LOG_DEBUG("CURL:URI:" << URI); if (!CACertFile_.empty()) { std::ifstream ifs(CACertFile_.c_str()); FREDCPP_LOG_DEBUG("CURL:CACertFile:" << CACertFile_ << " found:" << ifs.good()); } if (CURLE_OK == (CURLStatus_ = curl_easy_setopt(curl, CURLOPT_USERAGENT, userAgent_.c_str())) && CURLE_OK == (CURLStatus_ = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeDataCallback_)) && CURLE_OK == (CURLStatus_ = curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L)) && CURLE_OK == (CURLStatus_ = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L)) && CURLE_OK == (CURLStatus_ = curl_easy_setopt(curl, CURLOPT_FILE, &response.getContentStream())) && CURLE_OK == (CURLStatus_ = curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeoutSecs_)) && CURLE_OK == (CURLStatus_ = curl_easy_setopt(curl, CURLOPT_URL, URI.c_str())) && CURLE_OK == (CURLStatus_ = curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuf_)) && (!request.isHttps() || CURLE_OK == (CURLStatus_ = curl_easy_setopt(curl, CURLOPT_CAINFO, CACertFile_.c_str()))) ) { do { CURLStatus_ = curl_easy_perform(curl); if (CURLE_OK == CURLStatus_) { // on successfull call get http-status and content-type long code(0L); char *strInfo(NULL); if (CURLE_OK == curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code) && CURLE_OK == curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &strInfo)) { response.setHttpStatus(httpStatusFromCode(code)); response.setContentType(strInfo); } } else { FREDCPP_LOG_DEBUG("CURL:Request failed CURLStatus:" << CURLStatus_ << "|" << errorBuf_); } retry = (CURLE_OPERATION_TIMEDOUT == CURLStatus_ || CURLE_COULDNT_RESOLVE_HOST == CURLStatus_ || CURLE_COULDNT_RESOLVE_PROXY == CURLStatus_ || CURLE_COULDNT_CONNECT == CURLStatus_); if (retry) { if (retryCount < retryMaxCount_) { ++retryCount; FREDCPP_LOG_DEBUG("CURL:Waiting " << retryWaitSecs_ << "ms" << " before request retry " << retryCount << " ..."); internal::sleep(retryWaitSecs_); } else { retry = false; FREDCPP_LOG_DEBUG("CURL:Retry maximum count " << retryMaxCount_ << " reached - giving up."); } } } while (retry); } if (CURLE_OK == CURLStatus_) { FREDCPP_LOG_DEBUG("CURL:http-response:" << response.getHttpStatus() << " " << "content-type:" << response.getContentType()); } curl_easy_cleanup(curl); return (internal::HttpResponse::HTTP_OK == response.getHttpStatus()); }