diff --git a/autotest/gdrivers/ogcapi.py b/autotest/gdrivers/ogcapi.py index 7fec70675248..fdebf3a42427 100644 --- a/autotest/gdrivers/ogcapi.py +++ b/autotest/gdrivers/ogcapi.py @@ -382,7 +382,10 @@ def test_ogr_ogcapi_raster(api, collection, tmp_path): ) def test_ogc_api_wrong_collection(api, of_type): - with pytest.raises(Exception, match="Invalid data collection"): + with pytest.raises( + Exception, + match=r"HTTP error code : 400,

GNOSIS Map Server \(OGCAPI\) - 400 Bad Request

Invalid data collection

", + ): gdal.OpenEx( f"OGCAPI:http://127.0.0.1:{gdaltest.webserver_port}/fakeogcapi/collections/NOT_EXISTS", of_type, diff --git a/frmts/ogcapi/gdalogcapidataset.cpp b/frmts/ogcapi/gdalogcapidataset.cpp index 2d51f64ce230..611ad452d150 100644 --- a/frmts/ogcapi/gdalogcapidataset.cpp +++ b/frmts/ogcapi/gdalogcapidataset.cpp @@ -511,10 +511,15 @@ bool OGCAPIDataset::Download(const CPLString &osURL, const char *pszPostContent, if (psResult->pszErrBuf != nullptr) { - CPLError(CE_Failure, CPLE_AppDefined, "%s", - psResult->pabyData - ? reinterpret_cast(psResult->pabyData) - : psResult->pszErrBuf); + std::string osErrorMsg(psResult->pszErrBuf); + const char *pszData = + reinterpret_cast(psResult->pabyData); + if (pszData) + { + osErrorMsg += ", "; + osErrorMsg.append(pszData, CPLStrnlen(pszData, 1000)); + } + CPLError(CE_Failure, CPLE_AppDefined, "%s", osErrorMsg.c_str()); CPLHTTPDestroyResult(psResult); return false; }