本文整理汇总了C++中CPLHTTPDestroyResult函数的典型用法代码示例。如果您正苦于以下问题:C++ CPLHTTPDestroyResult函数的具体用法?C++ CPLHTTPDestroyResult怎么用?C++ CPLHTTPDestroyResult使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CPLHTTPDestroyResult函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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;
}
开发者ID:Joe-xXx,项目名称:gdal,代码行数:54,代码来源:ogrgfttablelayer.cpp
示例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;
}
开发者ID:0004c,项目名称:node-gdal,代码行数:51,代码来源:ogrgftresultlayer.cpp
示例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;
}
开发者ID:drownedout,项目名称:datamap,代码行数:29,代码来源:ogrgeojsondriver.cpp
示例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;
}
开发者ID:bbradbury,项目名称:lib_gdal,代码行数:35,代码来源:ogrgeojsondriver.cpp
示例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;
}
开发者ID:ksshannon,项目名称:gdal,代码行数:47,代码来源:ogramigoclouddatasource.cpp
示例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());
}
开发者ID:tbonfort,项目名称:gdal,代码行数:46,代码来源:ogrelasticdatasource.cpp
示例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;
}
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:45,代码来源:ogrgfttablelayer.cpp
示例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);
}
}
开发者ID:Mofangbao,项目名称:node-gdal,代码行数:9,代码来源:ogrelasticdatasource.cpp
示例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;
}
开发者ID:0004c,项目名称:node-gdal,代码行数:57,代码来源:ogrgftdatasource.cpp
示例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;
}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:51,代码来源:ogrelasticdatasource.cpp
示例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);
}
}
开发者ID:OSGeo,项目名称:gdal,代码行数:15,代码来源:ogrplscenesdatav1dataset.cpp
示例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 );
}
开发者ID:Mavrx-inc,项目名称:gdal,代码行数:17,代码来源:ogrcouchdbdatasource.cpp
示例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;
}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:46,代码来源:ogrcouchdbdatasource.cpp
示例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 );
}
开发者ID:koordinates,项目名称:gdal,代码行数:17,代码来源:ogrgftdatasource.cpp
示例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);
}
开发者ID:ryandavid,项目名称:rotobox,代码行数:18,代码来源:ogramigoclouddatasource.cpp
示例16: atoi
bool CPLJSONDocument::LoadUrl(const std::string & /*osUrl*/, char ** /*papszOptions*/,
GDALProgressFunc /*pfnProgress*/,
void * /*pProgressArg*/)
#endif // HAVE_CURL
{
#ifdef HAVE_CURL
int nDepth = atoi( CSLFetchNameValueDef( papszOptions, "JSON_DEPTH", "10") );
JsonContext ctx = { nullptr, json_tokener_new_ex(nDepth), 0 };
CPLHTTPFetchWriteFunc pWriteFunc = CPLJSONWriteFunction;
CPLHTTPResult *psResult = CPLHTTPFetchEx( osUrl.c_str(), papszOptions,
pfnProgress, pProgressArg,
pWriteFunc, &ctx );
bool bResult = true;
if( psResult->nStatus != 0 /*CURLE_OK*/ )
{
bResult = false;
}
CPLHTTPDestroyResult( psResult );
enum json_tokener_error jerr;
if ((jerr = json_tokener_get_error(ctx.pTokener)) != json_tokener_success) {
CPLError(CE_Failure, CPLE_AppDefined, "JSON error: %s\n",
json_tokener_error_desc(jerr));
bResult = false;
}
else {
if( m_poRootJsonObject )
json_object_put( TO_JSONOBJ(m_poRootJsonObject) );
m_poRootJsonObject = ctx.pObject;
}
json_tokener_free(ctx.pTokener);
return bResult;
#else
return false;
#endif
}
开发者ID:ksshannon,项目名称:gdal,代码行数:41,代码来源:cpl_json.cpp
示例17: GMLParseXMLFile
static
CPLXMLNode* GMLParseXMLFile(const char* pszFilename)
{
if( STARTS_WITH(pszFilename, "http://") ||
STARTS_WITH(pszFilename, "https://") )
{
CPLXMLNode* psRet = NULL;
CPLHTTPResult* psResult = CPLHTTPFetch( pszFilename, NULL );
if( psResult != NULL )
{
if( psResult->pabyData != NULL )
{
psRet = CPLParseXMLString( (const char*) psResult->pabyData );
}
CPLHTTPDestroyResult(psResult);
}
return psRet;
}
else
{
return CPLParseXMLFile(pszFilename);
}
}
开发者ID:ryandavid,项目名称:rotobox,代码行数:23,代码来源:parsexsd.cpp
示例18: CSLAddString
json_object* OGRCouchDBDataSource::REQUEST(const char* pszVerb,
const char* pszURI,
const char* pszData)
{
bMustCleanPersistent = true;
char** papszOptions = NULL;
papszOptions = CSLAddString(papszOptions, CPLSPrintf("PERSISTENT=CouchDB:%p", this));
CPLString osCustomRequest("CUSTOMREQUEST=");
osCustomRequest += pszVerb;
papszOptions = CSLAddString(papszOptions, osCustomRequest);
CPLString osPOSTFIELDS("POSTFIELDS=");
if (pszData)
osPOSTFIELDS += pszData;
papszOptions = CSLAddString(papszOptions, osPOSTFIELDS);
papszOptions = CSLAddString(papszOptions, "HEADERS=Content-Type: application/json");
if (!osUserPwd.empty() )
{
CPLString osUserPwdOption("USERPWD=");
osUserPwdOption += osUserPwd;
papszOptions = CSLAddString(papszOptions, osUserPwdOption);
}
CPLDebug("CouchDB", "%s %s", pszVerb, pszURI);
CPLString osFullURL(osURL);
osFullURL += pszURI;
CPLPushErrorHandler(CPLQuietErrorHandler);
CPLHTTPResult * psResult = CPLHTTPFetch( osFullURL, papszOptions);
CPLPopErrorHandler();
CSLDestroy(papszOptions);
if (psResult == NULL)
return NULL;
const char* pszServer = CSLFetchNameValue(psResult->papszHeaders, "Server");
if (pszServer == NULL || !STARTS_WITH_CI(pszServer, "CouchDB"))
{
CPLHTTPDestroyResult(psResult);
return NULL;
}
if (psResult->nDataLen == 0)
{
CPLHTTPDestroyResult(psResult);
return NULL;
}
json_object* jsobj = NULL;
const char* pszText = reinterpret_cast<const char*>(psResult->pabyData);
if( !OGRJSonParse(pszText, &jsobj, true) )
{
CPLHTTPDestroyResult(psResult);
return NULL;
}
CPLHTTPDestroyResult(psResult);
return jsobj;
}
开发者ID:Mavrx-inc,项目名称:gdal,代码行数:62,代码来源:ogrcouchdbdatasource.cpp
示例19: CPLString
json_object* OGRAmigoCloudDataSource::RunSQL(const char* pszUnescapedSQL)
{
CPLString osSQL;
osSQL = "/users/0/projects/" + CPLString(pszProjectId) + "/sql";
/* -------------------------------------------------------------------- */
/* Provide the API Key */
/* -------------------------------------------------------------------- */
if( !osAPIKey.empty() )
{
osSQL += "?token=" + osAPIKey;
}
osSQL += "&query=";
char * pszEscaped = CPLEscapeString( pszUnescapedSQL, -1, CPLES_URL );
std::string escaped = pszEscaped;
CPLFree( pszEscaped );
osSQL += escaped;
/* -------------------------------------------------------------------- */
/* Collection the header options and execute request. */
/* -------------------------------------------------------------------- */
std::string pszAPIURL = GetAPIURL();
char** papszOptions = nullptr;
papszOptions = CSLAddString(papszOptions, GetUserAgentOption().c_str());
pszAPIURL += osSQL;
CPLHTTPResult * psResult = CPLHTTPFetch( pszAPIURL.c_str(), papszOptions);
CSLDestroy(papszOptions);
if( psResult == nullptr )
return nullptr;
/* -------------------------------------------------------------------- */
/* Check for some error conditions and report. HTML Messages */
/* are transformed info failure. */
/* -------------------------------------------------------------------- */
if (psResult->pszContentType &&
strncmp(psResult->pszContentType, "text/html", 9) == 0)
{
CPLDebug( "AMIGOCLOUD", "RunSQL HTML Response:%s", psResult->pabyData );
CPLError(CE_Failure, CPLE_AppDefined,
"HTML error page returned by server");
CPLHTTPDestroyResult(psResult);
return nullptr;
}
if (psResult->pszErrBuf != nullptr && psResult->pabyData != nullptr )
{
CPLError( CE_Failure, CPLE_AppDefined, "GET Response: %s", psResult->pabyData );
}
else if (psResult->nStatus != 0)
{
CPLDebug( "AMIGOCLOUD", "RunGET Error Status:%d", psResult->nStatus );
}
if( psResult->pabyData == nullptr )
{
CPLHTTPDestroyResult(psResult);
return nullptr;
}
CPLDebug( "AMIGOCLOUD", "RunSQL Response:%s", psResult->pabyData );
json_object* poObj = nullptr;
const char* pszText = reinterpret_cast<const char*>(psResult->pabyData);
if( !OGRJSonParse(pszText, &poObj, true) )
{
CPLHTTPDestroyResult(psResult);
return nullptr;
}
CPLHTTPDestroyResult(psResult);
if( poObj != nullptr )
{
if( json_object_get_type(poObj) == json_type_object )
{
json_object* poError = CPL_json_object_object_get(poObj, "error");
if( poError != nullptr && json_object_get_type(poError) == json_type_array &&
json_object_array_length(poError) > 0 )
{
poError = json_object_array_get_idx(poError, 0);
if( poError != nullptr && json_object_get_type(poError) == json_type_string )
{
CPLError(CE_Failure, CPLE_AppDefined,
"Error returned by server : %s", json_object_get_string(poError));
json_object_put(poObj);
return nullptr;
}
}
}
else
{
json_object_put(poObj);
return nullptr;
}
}
//.........这里部分代码省略.........
开发者ID:ksshannon,项目名称:gdal,代码行数:101,代码来源:ogramigoclouddatasource.cpp
示例20: osURL
json_object* OGRAmigoCloudDataSource::RunGET(const char*pszURL)
{
CPLString osURL(pszURL);
/* -------------------------------------------------------------------- */
/* Provide the API Key */
/* -------------------------------------------------------------------- */
if( osAPIKey.size() > 0 )
{
osURL += "?token=";
osURL += osAPIKey;
}
CPLHTTPResult * psResult = CPLHTTPFetch( osURL.c_str(), NULL);
if( psResult == NULL )
return NULL;
if (psResult->pszContentType &&
strncmp(psResult->pszContentType, "text/html", 9) == 0)
{
CPLDebug( "AMIGOCLOUD", "RunGET HTML Response:%s", psResult->pabyData );
CPLError(CE_Failure, CPLE_AppDefined,
"HTML error page returned by server:%s", psResult->pabyData);
CPLHTTPDestroyResult(psResult);
return NULL;
}
if ( psResult->pszErrBuf != NULL)
{
CPLDebug( "AMIGOCLOUD", "RunGET Error Message:%s", psResult->pszErrBuf );
}
else if (psResult->nStatus != 0)
{
CPLDebug( "AMIGOCLOUD", "RunGET Error Status:%d", psResult->nStatus );
}
if( psResult->pabyData == NULL )
{
CPLHTTPDestroyResult(psResult);
return NULL;
}
CPLDebug( "AMIGOCLOUD", "RunGET Response:%s", psResult->pabyData );
json_tokener* jstok = NULL;
json_object* poObj = NULL;
jstok = json_tokener_new();
poObj = json_tokener_parse_ex(jstok, (const char*) psResult->pabyData, -1);
if( jstok->err != json_tokener_success)
{
CPLError( CE_Failure, CPLE_AppDefined,
"JSON parsing error: %s (at offset %d)",
json_tokener_error_desc(jstok->err), jstok->char_offset);
json_tokener_free(jstok);
CPLHTTPDestroyResult(psResult);
return NULL;
}
json_tokener_free(jstok);
CPLHTTPDestroyResult(psResult);
if( poObj != NULL )
{
if( json_object_get_type(poObj) == json_type_object )
{
json_object* poError = CPL_json_object_object_get(poObj, "error");
if( poError != NULL && json_object_get_type(poError) == json_type_array &&
json_object_array_length(poError) > 0 )
{
poError = json_object_array_get_idx(poError, 0);
if( poError != NULL && json_object_get_type(poError) == json_type_string )
{
CPLError(CE_Failure, CPLE_AppDefined,
"Error returned by server : %s", json_object_get_string(poError));
json_object_put(poObj);
return NULL;
}
}
}
else
{
json_object_put(poObj);
return NULL;
}
}
return poObj;
}
开发者ID:ryandavid,项目名称:rotobox,代码行数:88,代码来源:ogramigoclouddatasource.cpp
注:本文中的CPLHTTPDestroyResult函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论