本文整理汇总了C++中CPLHTTPDestroyResult函数的典型用法代码示例。如果您正苦于以下问题:C++ CPLHTTPDestroyResult函数的具体用法?C++ CPLHTTPDestroyResult怎么用?C++ CPLHTTPDestroyResult使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CPLHTTPDestroyResult函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetLayerDefn
OGRErr OGRGFTTableLayer::CommitTransaction()
{
GetLayerDefn();
if (!bInTransaction)
{
CPLError(CE_Failure, CPLE_AppDefined, "Should be in transaction");
return OGRERR_FAILURE;
}
bInTransaction = FALSE;
if (nFeaturesInTransaction > 0)
{
if (nFeaturesInTransaction > 1)
osTransaction += ";";
CPLHTTPResult * psResult = poDS->RunSQL(osTransaction);
osTransaction.resize(0);
nFeaturesInTransaction = 0;
if (psResult == NULL)
{
CPLError(CE_Failure, CPLE_AppDefined, "CommitTransaction failed");
return OGRERR_FAILURE;
}
char* pszLine = (char*) psResult->pabyData;
if (pszLine == NULL ||
strncmp(pszLine, "rowid", 5) != 0 ||
psResult->pszErrBuf != NULL)
{
CPLError(CE_Failure, CPLE_AppDefined, "CommitTransaction failed : %s",
pszLine ? pszLine : psResult->pszErrBuf);
CPLHTTPDestroyResult(psResult);
return OGRERR_FAILURE;
}
pszLine = OGRGFTGotoNextLine(pszLine);
while(pszLine && *pszLine != 0)
{
char* pszNextLine = OGRGFTGotoNextLine(pszLine);
if (pszNextLine)
pszNextLine[-1] = 0;
//CPLDebug("GFT", "Feature id = %s", pszLine);
pszLine = pszNextLine;
}
CPLHTTPDestroyResult(psResult);
}
return OGRERR_NONE;
}
示例2: osChangedSQL
int OGRGFTResultLayer::FetchNextRows()
{
if (!EQUALN(osSQL.c_str(), "SELECT", 6))
return FALSE;
aosRows.resize(0);
CPLString osChangedSQL(osSQL);
if (osSQL.ifind(" OFFSET ") == std::string::npos &&
osSQL.ifind(" LIMIT ") == std::string::npos)
{
osChangedSQL += CPLSPrintf(" OFFSET %d LIMIT %d",
nOffset, GetFeaturesToFetch());
}
CPLPushErrorHandler(CPLQuietErrorHandler);
CPLHTTPResult * psResult = poDS->RunSQL(osChangedSQL);
CPLPopErrorHandler();
if (psResult == NULL)
{
bEOF = TRUE;
return FALSE;
}
char* pszLine = (char*) psResult->pabyData;
if (pszLine == NULL ||
psResult->pszErrBuf != NULL)
{
CPLError(CE_Failure, CPLE_AppDefined, "RunSQL() failed");
CPLHTTPDestroyResult(psResult);
bEOF = TRUE;
return FALSE;
}
pszLine = OGRGFTGotoNextLine(pszLine);
if (pszLine == NULL)
{
CPLHTTPDestroyResult(psResult);
bEOF = TRUE;
return FALSE;
}
ParseCSVResponse(pszLine, aosRows);
CPLHTTPDestroyResult(psResult);
bEOF = (int)aosRows.size() < GetFeaturesToFetch();
return TRUE;
}
示例3: CPLURLAddKVP
GIntBig OGRESRIFeatureServiceLayer::GetFeatureCount( int bForce )
{
GIntBig nFeatureCount = -1;
if( m_poAttrQuery == NULL && m_poFilterGeom == NULL )
{
CPLString osNewURL = CPLURLAddKVP(poDS->GetURL(), "returnCountOnly", "true");
CPLHTTPResult* pResult = NULL;
CPLErrorReset();
pResult = CPLHTTPFetch( osNewURL, NULL );
if( pResult != NULL && pResult->nDataLen != 0 && CPLGetLastErrorNo() == 0 &&
pResult->nStatus == 0 )
{
const char* pszCount = strstr((const char*)pResult->pabyData, "\"count\"");
if( pszCount )
{
pszCount = strchr(pszCount, ':');
if( pszCount )
{
pszCount++;
nFeatureCount = CPLAtoGIntBig(pszCount);
}
}
}
CPLHTTPDestroyResult( pResult );
}
if( nFeatureCount < 0 )
nFeatureCount = OGRLayer::GetFeatureCount(bForce);
return nFeatureCount;
}
示例4: CPLURLAddKVP
OGRErr OGRESRIFeatureServiceLayer::GetExtent(OGREnvelope *psExtent, int bForce)
{
OGRErr eErr = OGRERR_FAILURE;
CPLString osNewURL = CPLURLAddKVP(poDS->GetURL(), "returnExtentOnly", "true");
osNewURL = CPLURLAddKVP(osNewURL, "f", "geojson");
CPLErrorReset();
CPLHTTPResult* pResult = CPLHTTPFetch( osNewURL, NULL );
if( pResult != NULL && pResult->nDataLen != 0 && CPLGetLastErrorNo() == 0 &&
pResult->nStatus == 0 )
{
const char* pszBBox = strstr((const char*)pResult->pabyData, "\"bbox\"");
if( pszBBox )
{
pszBBox = strstr(pszBBox, ":[");
if( pszBBox )
{
pszBBox+=2;
char** papszTokens = CSLTokenizeString2(pszBBox, ",", 0);
if( CSLCount(papszTokens) >= 4 )
{
psExtent->MinX = CPLAtof(papszTokens[0]);
psExtent->MinY = CPLAtof(papszTokens[1]);
psExtent->MaxX = CPLAtof(papszTokens[2]);
psExtent->MaxY = CPLAtof(papszTokens[3]);
eErr = OGRERR_NONE;
}
CSLDestroy(papszTokens);
}
}
}
CPLHTTPDestroyResult( pResult );
if( eErr == OGRERR_FAILURE )
eErr = OGRLayer::GetExtent(psExtent, bForce);
return eErr;
}
示例5: osURL
bool OGRAmigoCloudDataSource::RunDELETE(const char*pszURL)
{
CPLString osURL(pszURL);
/* -------------------------------------------------------------------- */
/* Provide the API Key */
/* -------------------------------------------------------------------- */
if( !osAPIKey.empty() )
{
if(osURL.find("?") == std::string::npos)
osURL += "?token=";
else
osURL += "&token=";
osURL += osAPIKey;
}
char** papszOptions=nullptr;
CPLString osPOSTFIELDS("CUSTOMREQUEST=DELETE");
papszOptions = CSLAddString(papszOptions, osPOSTFIELDS);
papszOptions = CSLAddString(papszOptions, GetUserAgentOption().c_str());
CPLHTTPResult * psResult = CPLHTTPFetch( osURL.c_str(), papszOptions);
CSLDestroy(papszOptions);
if( psResult == nullptr )
return false;
if (psResult->pszContentType &&
strncmp(psResult->pszContentType, "text/html", 9) == 0)
{
CPLDebug( "AMIGOCLOUD", "RunDELETE HTML Response:%s", psResult->pabyData );
CPLError(CE_Failure, CPLE_AppDefined,
"HTML error page returned by server:%s", psResult->pabyData);
CPLHTTPDestroyResult(psResult);
return false;
}
if (psResult->pszErrBuf != nullptr && psResult->pabyData != nullptr )
{
CPLError( CE_Failure, CPLE_AppDefined, "DELETE Response: %s", psResult->pabyData );
}
else if ( psResult->nStatus != 0)
{
CPLDebug( "AMIGOCLOUD", "DELETE Error Status:%d", psResult->nStatus );
}
CPLHTTPDestroyResult(psResult);
return true;
}
示例6: HTTPFetch
int OGRElasticDataSource::GetLayerCount()
{
if( m_bAllLayersListed )
{
return static_cast<int>(m_apoLayers.size());
}
m_bAllLayersListed = true;
CPLHTTPResult* psResult = HTTPFetch((m_osURL + "/_cat/indices?h=i").c_str(), nullptr);
if( psResult == nullptr || psResult->pszErrBuf != nullptr ||
psResult->pabyData == nullptr )
{
CPLHTTPDestroyResult(psResult);
return 0;
}
char* pszCur = (char*)psResult->pabyData;
char* pszNextEOL = strchr(pszCur, '\n');
while( pszNextEOL && pszNextEOL > pszCur )
{
*pszNextEOL = '\0';
char* pszBeforeEOL = pszNextEOL - 1;
while( *pszBeforeEOL == ' ' )
{
*pszBeforeEOL = '\0';
pszBeforeEOL --;
}
const char* pszIndexName = pszCur;
pszCur = pszNextEOL + 1;
pszNextEOL = strchr(pszCur, '\n');
if( STARTS_WITH(pszIndexName, ".security") ||
STARTS_WITH(pszIndexName, ".monitoring") )
{
continue;
}
FetchMapping(pszIndexName);
}
CPLHTTPDestroyResult(psResult);
return static_cast<int>(m_apoLayers.size());
}
示例7: GetLayerDefn
GIntBig OGRGFTTableLayer::GetFeatureCount(CPL_UNUSED int bForce)
{
GetLayerDefn();
CPLString osSQL("SELECT COUNT() FROM ");
osSQL += osTableId;
if (osWHERE.size())
{
osSQL += " ";
osSQL += osWHERE;
}
CPLHTTPResult * psResult = poDS->RunSQL(osSQL);
if (psResult == NULL)
return 0;
char* pszLine = (char*) psResult->pabyData;
if (pszLine == NULL ||
strncmp(pszLine, "count()", 7) != 0 ||
psResult->pszErrBuf != NULL)
{
CPLError(CE_Failure, CPLE_AppDefined, "GetFeatureCount() failed");
CPLHTTPDestroyResult(psResult);
return 0;
}
pszLine = OGRGFTGotoNextLine(pszLine);
if (pszLine == NULL)
{
CPLError(CE_Failure, CPLE_AppDefined, "GetFeatureCount() failed");
CPLHTTPDestroyResult(psResult);
return 0;
}
char* pszNextLine = OGRGFTGotoNextLine(pszLine);
if (pszNextLine)
pszNextLine[-1] = 0;
int nFeatureCount = atoi(pszLine);
CPLHTTPDestroyResult(psResult);
return nFeatureCount;
}
示例8: CSLAddNameValue
void OGRElasticDataSource::DeleteIndex(const CPLString &url) {
char** papszOptions = NULL;
papszOptions = CSLAddNameValue(papszOptions, "CUSTOMREQUEST", "DELETE");
CPLHTTPResult* psResult = CPLHTTPFetch(url, papszOptions);
CSLDestroy(papszOptions);
if (psResult) {
CPLHTTPDestroyResult(psResult);
}
}
示例9: osSQL
CPLHTTPResult * OGRGFTDataSource::RunSQL(const char* pszUnescapedSQL)
{
CPLString osSQL("POSTFIELDS=sql=");
/* Do post escaping */
for(int i=0;pszUnescapedSQL[i] != 0;i++)
{
const int ch = ((unsigned char*)pszUnescapedSQL)[i];
if (ch != '&' && ch >= 32 && ch < 128)
osSQL += (char)ch;
else
osSQL += CPLSPrintf("%%%02X", ch);
}
/* -------------------------------------------------------------------- */
/* Provide the API Key - used to rate limit access (see */
/* GFT_APIKEY config) */
/* -------------------------------------------------------------------- */
osSQL += "&key=";
osSQL += osAPIKey;
/* -------------------------------------------------------------------- */
/* Force old style CSV output from calls - maybe we want to */
/* migrate to JSON output at some point? */
/* -------------------------------------------------------------------- */
osSQL += "&alt=csv";
/* -------------------------------------------------------------------- */
/* Collection the header options and execute request. */
/* -------------------------------------------------------------------- */
char** papszOptions = CSLAddString(AddHTTPOptions(), osSQL);
CPLHTTPResult * psResult = CPLHTTPFetch( GetAPIURL(), papszOptions);
CSLDestroy(papszOptions);
/* -------------------------------------------------------------------- */
/* Check for some error conditions and report. HTML Messages */
/* are transformed info failure. */
/* -------------------------------------------------------------------- */
if (psResult && psResult->pszContentType &&
strncmp(psResult->pszContentType, "text/html", 9) == 0)
{
CPLDebug( "GFT", "RunSQL HTML Response:%s", psResult->pabyData );
CPLError(CE_Failure, CPLE_AppDefined,
"HTML error page returned by server");
CPLHTTPDestroyResult(psResult);
psResult = NULL;
}
if (psResult && psResult->pszErrBuf != NULL)
{
CPLDebug( "GFT", "RunSQL Error Message:%s", psResult->pszErrBuf );
}
else if (psResult && psResult->nStatus != 0)
{
CPLDebug( "GFT", "RunSQL Error Status:%d", psResult->nStatus );
}
return psResult;
}
示例10: CPLStrdup
int OGRElasticDataSource::Create(const char *pszFilename,
CPL_UNUSED char **papszOptions) {
this->pszName = CPLStrdup(pszFilename);
const char* pszMetaFile = CPLGetConfigOption("ES_META", NULL);
const char* pszWriteMap = CPLGetConfigOption("ES_WRITEMAP", NULL);;
this->bOverwrite = CSLTestBoolean(CPLGetConfigOption("ES_OVERWRITE", "0"));
this->nBulkUpload = (int) CPLAtof(CPLGetConfigOption("ES_BULK", "0"));
if (pszWriteMap != NULL) {
this->pszWriteMap = CPLStrdup(pszWriteMap);
}
// Read in the meta file from disk
if (pszMetaFile != NULL)
{
int fsize;
char *fdata;
FILE *fp;
fp = fopen(pszMetaFile, "rb");
if (fp != NULL) {
fseek(fp, 0, SEEK_END);
fsize = (int) ftell(fp);
fdata = (char *) malloc(fsize + 1);
fseek(fp, 0, SEEK_SET);
if (0 == fread(fdata, fsize, 1, fp)) {
CPLError(CE_Failure, CPLE_FileIO,
"OGRElasticDataSource::Create read failed.");
}
fdata[fsize] = 0;
this->pszMapping = fdata;
fclose(fp);
}
}
// Do a status check to ensure that the server is valid
CPLHTTPResult* psResult = CPLHTTPFetch(CPLSPrintf("%s/_status", pszFilename), NULL);
int bOK = (psResult != NULL && psResult->pszErrBuf == NULL);
if (!bOK)
{
CPLError(CE_Failure, CPLE_NoWriteAccess,
"Could not connect to server");
}
CPLHTTPDestroyResult(psResult);
return bOK;
}
示例11: CPLFree
OGRPLScenesDataV1Dataset::~OGRPLScenesDataV1Dataset()
{
for( int i = 0; i < m_nLayers; i++ )
delete m_papoLayers[i];
CPLFree(m_papoLayers);
if( m_bMustCleanPersistent )
{
char **papszOptions =
CSLSetNameValue(
nullptr, "CLOSE_PERSISTENT", CPLSPrintf("PLSCENES:%p", this));
CPLHTTPDestroyResult(CPLHTTPFetch(m_osBaseURL, papszOptions));
CSLDestroy(papszOptions);
}
}
示例12: CPLFree
OGRCouchDBDataSource::~OGRCouchDBDataSource()
{
for( int i = 0; i < nLayers; i++ )
delete papoLayers[i];
CPLFree( papoLayers );
if( bMustCleanPersistent )
{
char** papszOptions = NULL;
papszOptions = CSLSetNameValue(papszOptions, "CLOSE_PERSISTENT", CPLSPrintf("CouchDB:%p", this));
CPLHTTPDestroyResult( CPLHTTPFetch( osURL, papszOptions ) );
CSLDestroy(papszOptions);
}
CPLFree( pszName );
}
示例13: CSLAddString
char* OGRCouchDBDataSource::GetETag(const char* pszURI)
{
// make a head request and only return the etag response header
char* pszEtag = NULL;
char **papszTokens;
char** papszOptions = NULL;
bMustCleanPersistant = TRUE;
papszOptions = CSLAddString(papszOptions, CPLSPrintf("PERSISTENT=CouchDB:%p", this));
papszOptions = CSLAddString(papszOptions, "HEADERS=Content-Type: application/json");
papszOptions = CSLAddString(papszOptions, "NO_BODY=1");
if (osUserPwd.size())
{
CPLString osUserPwdOption("USERPWD=");
osUserPwdOption += osUserPwd;
papszOptions = CSLAddString(papszOptions, osUserPwdOption);
}
CPLDebug("CouchDB", "HEAD %s", pszURI);
CPLString osFullURL(osURL);
osFullURL += pszURI;
CPLPushErrorHandler(CPLQuietErrorHandler);
CPLHTTPResult * psResult = CPLHTTPFetch( osFullURL, papszOptions);
CPLPopErrorHandler();
CSLDestroy(papszOptions);
if (psResult == NULL)
return NULL;
if (CSLFetchNameValue(psResult->papszHeaders, "Etag") != NULL)
{
papszTokens =
CSLTokenizeString2( CSLFetchNameValue(psResult->papszHeaders, "Etag"), "\"\r\n", 0 );
pszEtag = CPLStrdup(papszTokens[0]);
CSLDestroy( papszTokens );
}
CPLHTTPDestroyResult(psResult);
return pszEtag;
}
示例14: CPLFree
OGRGFTDataSource::~OGRGFTDataSource()
{
for( int i = 0; i < nLayers; i++ )
delete papoLayers[i];
CPLFree( papoLayers );
if (bMustCleanPersistent)
{
char** papszOptions = nullptr;
papszOptions = CSLSetNameValue(papszOptions, "CLOSE_PERSISTENT", CPLSPrintf("GFT:%p", this));
CPLHTTPDestroyResult( CPLHTTPFetch( GetAPIURL(), papszOptions) );
CSLDestroy(papszOptions);
}
CPLFree( pszName );
}
示例15: CPLFree
OGRAmigoCloudDataSource::~OGRAmigoCloudDataSource()
{
for( int i = 0; i < nLayers; i++ )
delete papoLayers[i];
CPLFree( papoLayers );
if( bMustCleanPersistent )
{
char** papszOptions = NULL;
papszOptions = CSLSetNameValue(papszOptions, "CLOSE_PERSISTENT", CPLSPrintf("AMIGOCLOUD:%p", this));
CPLHTTPDestroyResult( CPLHTTPFetch( GetAPIURL(), papszOptions) );
CSLDestroy(papszOptions);
}
CPLFree( pszName );
CPLFree(pszProjetctId);
}