无法使用 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恢复ftp上传与curl multi

使用 PHP cURL 将文件上传到 Google 签名 URL

如何将 curl 上传进度发送到要显示的 ajax

使用PHP和cURL通过它们的API将文件上传到RapidShare

使用 curl 将文件上传到 FastAPI 端点 - 307 临时重定向