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;
}