无法使用 Curl 将要素类型上传到 Geoserver REST API
Posted
技术标签:
【中文标题】无法使用 Curl 将要素类型上传到 Geoserver REST API【英文标题】:Can't upload feature type to Geoserver REST API using Curl 【发布时间】:2022-01-10 05:52:31 【问题描述】:地理服务器版本 2.20.1
我正在尝试将 PostGIS 表注册为 Geoserver 中的图层。 这是我在 bash 中的 Curl 命令
curl -v -u $GEOSERVER_ADMIN_USER:$GEOSERVER_ADMIN_PASSWORD \
-XPOST -H "Content-type: text/xml" \
-d "\
<featureType>
<name>$dataset</name>\
<title>$dataset</title>\
<nativeCRS class='projected'>EPSG:4326</nativeCRS><srs>EPSG:4326</srs>\
<nativeBoundingBox>\
<minx>-94.0301461140306003</minx>\
<maxx>-91.0935619356926054</maxx>\
<miny>46.5128696410899991</miny>\
<maxy>47.7878144308049002</maxy>\
<crs class='projected'>EPSG:4326</crs>\
</nativeBoundingBox>
</featureType>" \
http://geoserver:8080/geoserver/rest/workspaces/foropt/datastores/postgis/featuretypes
其中$dataset
是表的名称。
这是我得到的错误:
请求没有被应用,因为它缺少有效的 目标资源的身份验证凭据。
我以前从未见过此错误。 而且我看不出我的凭据有什么问题,因为我正在使用相同的凭据在同一个 bash 脚本中成功执行其他任务(例如导入 GeoTIFF)。这是怎么回事?
【问题讨论】:
【参考方案1】:在这种情况下,Geoserver 与 PostGIS 一起以 docker-compose
排列设置。
有趣的是,当我第一次发帖时,我使用的是 Postgres 版本 14,PostGIS 版本 3.1。 当我恢复使用 Postgres 版本 13 时,错误消失了(好吧,出现了一个新问题,但它似乎是一个单独的问题——你知道它是怎么回事)。 ¯_(ツ)_/¯
我对 Postgres 版本不够熟悉,无法说明恢复到版本 13 有什么不同(也许版本 14 有安全更改??),但它对我有用。
【讨论】:
以上是关于无法使用 Curl 将要素类型上传到 Geoserver REST API的主要内容,如果未能解决你的问题,请参考以下文章
使用 cURL 将 PHP 文件上传到 imageshack
使用 PHP cURL 将文件上传到 Google 签名 URL