首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过POST正确地请求geoserver WFS?

如何通过POST正确地请求geoserver WFS?
EN

Stack Overflow用户
提问于 2014-07-25 09:55:44
回答 1查看 10.7K关注 0票数 6

我有一个盖瑟弗实例,它包含我们的数据。请通过GET工作正常,并返回预期的结果。但遗憾的是,它不适用于POST。

准确地说,下面是GET功能的请求,它返回一个有效的GetCapabilities Response:

代码语言:javascript
复制
http://myserver:8080/geoserver/wfs?service=wfs&version=1.1.0&request=GetCapabilities

我用wget进行测试,所以命令如下所示:

代码语言:javascript
复制
wget -O wfs 'http://myserver:8080/geoserver/wfs?service=wfs&version=1.1.0&request=GetCapabilities'

现在我尝试使用POST的功能-请求。我创建一个包含以下内容的请求(命名请求)的文件:

代码语言:javascript
复制
<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进行了竞争:

代码语言:javascript
复制
wget -O wfs --post-file=request 'http://myserver:8080/geoserver/wfs'

但现在我得到了一个OWS例外:

代码语言:javascript
复制
<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>

这看起来好像没有被发送过或者被忽略了。我在这里出什么错了?

编辑:好的,我解决了这个问题。问题是Geoserver需要一个内容类型标头来发布XML文件。因此正确的请求如下所示:

代码语言:javascript
复制
wget -O wfs --header='Content-Type: text/xml' --post-file=request.xml 'http://myserver:8080/geoserver/wfs'

这将返回预期的结果。

EN

回答 1

Stack Overflow用户

发布于 2014-07-28 21:12:06

我试图调查你的案子,但我没有服务器,所以我用了http://demo.opengeo.org/geoserver/web/

GET测试: http://demo.opengeo.org/geoserver/wfs?service=wfs&version=1.1.0&request=GetCapabilities

我和你一样得到了全面的回应。

POST测试:我使用http://www.hurl.it/是因为我在Windows上。具有以下参数:

  • 网址:http://demo.opengeo.org/geoserver/wfs
  • 参数:添加主体>与您的相同:

<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"/>

我得到了和GET版本一样的回应。

您能在这个演示服务器上尝试相同的测试吗?

更新

经过几个评论聊天,OP发现了自己的解决方案。POST调用缺少内容类型标头信息,这是强制性的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24952960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档