簡體   English   中英

如何通過POST正確請求地理服務器WFS?

[英]How to correctly request a geoserver WFS via POST?

我有一個包含我們數據的geoserver實例。 通過GET請求此操作可以正常工作並返回預期結果。 但遺憾的是它不適用於POST。

確切地說,這是對帶有GET的功能的請求,它返回一個有效的GetCapabilities-Response:

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-Exception:

<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主體或被忽略。 我有什么不對嗎?


編輯 :好的,我解決了這個問題。 問題是Geoserver期望用於發布XML文件的Content-Type-Header。 所以正確的請求如下所示:

wget -O wfs --header='Content-Type: text/xml' --post-file=request.xml 'http://myserver:8080/geoserver/wfs'

這將返回預期結果。

我試着調查你的情況,但我沒有服務器,所以我使用了http://demo.opengeo.org/geoserver/web/

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

我得到了像你一樣的完整回復。

POST測試:我使用的是http://www.hurl.it/因為我在Windows計算機上。 使用以下參數:

<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版本相同的響應。

你能用這個演示服務器嘗試相同的測試嗎?


UPDATE

聊了幾句后,OP發現自己找到了解決方案。 POST調用缺少必須的Content-Type-Header信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM