deegree / deegree3

Official deegree repository providing geospatial core libraries, data access and advanced OGC web service implementations
https://www.deegree.org
GNU Lesser General Public License v2.1
150 stars 100 forks source link

WFS mime-type header should follow requested output format by client #566

Open jandm opened 9 years ago

jandm commented 9 years ago

i am trying to connect the next-generation WFS client module of Geotools (version 13.0) to the demo Deegree server over here:

http://demo.deegree.org/utah-workspace/services/wfs

I am sending the following POST request:

http://demo.deegree.org/utah-workspace/services/wfs?REQUEST=DescribeFeatureType&VERSION=1.1.0&SERVICE=WFS

with body containing requested output format 'text/xml; subtype=gml/3.1.1' :

<?xml version="1.0" encoding="UTF-8"?> <wfs:DescribeFeatureType xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:app="http://www.deegree.org/app" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ows="http://www.opengis.net/ows" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" handle="GeoTools 13.0(3e400364d95c06a3e449c34dbc3c587a12bbdfb6) WFS 1.1.0 DataStore @jandm-Latitude-E6530#1" outputFormat="text/xml; subtype=gml/3.1.1" service="WFS" version="1.1.0"> wfs:TypeNameapp:Airports/wfs:TypeName /wfs:DescribeFeatureType

but the server returns content type: 'application/gml+xml;version=3.1'

tfr42 commented 9 years ago

Thanks for the finding. The endpoint URL given above contains KVP encoding of the DescribeFeatureType operation according to Web Feature Service Implementation Specification, Version: 1.1.0 here HTTP header encoding is not given.

But I can confirm that sending a HTTP POST/XML encoded DescribeFeatureType request to http://demo.deegree.org/utah-workspace/services/wfs with POST body:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:DescribeFeatureType xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:app="http://www.deegree.org/app"
    xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ows="http://www.opengis.net/ows"
    xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml"
    handle="GeoTools 13.0(3e400364d95c06a3e449c34dbc3c587a12bbdfb6) WFS 1.1.0 DataStore @jandm-Latitude-E6530#1"
    outputFormat="text/xml; subtype=gml/3.1.1" 
    service="WFS" version="1.1.0">
    <wfs:TypeName>app:Airports</wfs:TypeName>
</wfs:DescribeFeatureType>

results into a HTTP response with HTTP header:

Content-Type:       application/gml+xml;version=3.1

Can you please describe the issue on the client side a little bit more so that we can understand what the impact on the client side is.

jandm commented 9 years ago

The client parses the response by iterating over a list of registered parser factories and asking them if they can handle the response. The decision is primarily made by looking at the returned output format. It appears there are a lot of equivalent format headers out there, so it would be best if the server returns the exact format that the client has asked for (and which is in the supported list of the server). An alternative would be to blindly trust the server, but then one would still have to deal with exception message format in a separate way (while now it's completely agnostic).

tfr42 commented 9 years ago

OK, thanks. This issue effects Deegree-Version: 3.3.14 and higher. Thus is requires a patch for 3.3 and 3.4.