我有一个geoserver实例,包含我们的数据。通过GET请求可以正常工作并返回预期结果。但不幸的是,使用POST无法正常工作。
具体而言,这是使用GET请求的能力请求,返回有效的GetCapabilities响应:
我用wget测试了这个,所以命令看起来是这样的:
现在我尝试使用POST请求Capabilities。我创建了一个名为request的请求文件,其内容如下:
我使用以下wget命令来运行它与Geoserver:
这看起来像是没有发送POST-body或者被忽略了。我在这里做错了什么?
编辑:好的,我解决了问题。问题在于Geoserver期望在发布XML文件时有Content-Type头。因此,正确的请求应该像下面这样:
具体而言,这是使用GET请求的能力请求,返回有效的GetCapabilities响应:
http://myserver:8080/geoserver/wfs?service=wfs&version=1.1.0&request=GetCapabilities
我用wget测试了这个,所以命令看起来是这样的:
wget -O wfs 'http://myserver:8080/geoserver/wfs?service=wfs&version=1.1.0&request=GetCapabilities'
现在我尝试使用POST请求Capabilities。我创建了一个名为request的请求文件,其内容如下:
<GetCapabilities
service="WFS"
xmlns="http://www.opengis.net/wfs"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"/>
我使用以下wget命令来运行它与Geoserver:
wget -O wfs --post-file=request 'http://myserver:8080/geoserver/wfs'
但现在我遇到了OWS异常:
<ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0.0" xsi:schemaLocation="http://www.opengis.net/ows/1.1 http://moa:8080/geoserver/schemas/ows/1.1.0/owsAll.xsd">
<ows:Exception exceptionCode="MissingParameterValue" locator="request">
<ows:ExceptionText>Could not determine geoserver request from http request org.geoserver.platform.AdvancedDispatchFilter$AdvancedDispatchHttpRequest@1e5c2cc</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>
这看起来像是没有发送POST-body或者被忽略了。我在这里做错了什么?
编辑:好的,我解决了问题。问题在于Geoserver期望在发布XML文件时有Content-Type头。因此,正确的请求应该像下面这样:
wget -O wfs --header='Content-Type: text/xml' --post-file=request.xml 'http://myserver:8080/geoserver/wfs'
这将返回预期的结果。