Christopher, Thanks for your response. I'm trying to understand also how MapServers' WFS works. As far as I know, from my experience, which is not much, whenever I wanted to make a getFeature request from a JavaScript client using a filter I used AJAX Post requests and passing the data of the Filter as an XML string in the method 'xhr.send(params)'.
>Generally, the "TEMPLATE" error message means that you are not providing >enough information for MapServer to determine that the request >is intended to be a WMS or WFS request. In this case, it looks like you are >not including any of the parameters like SERVICE:WFS, >version strings, etc. in your request URL; It is possible that MapServer can >therefore not determine that this is a WFS request Finally I get some light of what the hell could be an error like "TEMPLATE ....", I didn't found anything about it related to WFS getFeature Requests. >I don't know WFS well, but my recommendation would be to add additional WFS >parameters -- possibly an action, possibly a service, >possibly others -- and see if that improves the situation any. The problem here is that if set to the onlie resource the parameter SERVICE=WFS, then MapServer asks for another parameter, VERSION, and then for another one, REQUEST, and then for another one, TYPENAME, but this is not what I want because I make filters on the fly and I pass them as POST parameter, and also this filters maybe complex and very long, so I think is not possible in my case to do it like that. The most strange thing is that I can get the data not using the proxy-script, but whenever I pass through the proxy-script, there are problems. I think that there might be the problem... Thanks anyway, I'll continue seeking. Un saludo, ·················································································· David Alda Fernández de Lezea Lurralde eta Biodibertsitate Saila / Dpto. de Territorio y Biodiversidad IKT Granja Modelo s/n · 01192 · Arkaute (Araba) ·················································································· Tlfnos.: 945-00-32-95 Fax: 945-00.32.90 ·················································································· email: [email protected] web: www.ikt.es ·················································································· -----Mensaje original----- De: [email protected] [mailto:[email protected]] Enviado el: martes, 22 de junio de 2010 14:21 Para: David Alda Fernandez de Lezea CC: [email protected] Asunto: Re: [OpenLayers-Users] Strange behaviourwithOpenLayers.Request.POST and MapServer On Jun 22, 2010, at 3:19 AM, ext David Alda Fernandez de Lezea wrote: David, Generally, the "TEMPLATE" error message means that you are not providing enough information for MapServer to determine that the request is intended to be a WMS or WFS request. In this case, it looks like you are not including any of the parameters like SERVICE:WFS, version strings, etc. in your request URL; It is possible that MapServer can therefore not determine that this is a WFS request. I don't know WFS well, but my recommendation would be to add additional WFS parameters -- possibly an action, possibly a service, possibly others -- and see if that improves the situation any. Best of luck. > David, > > Thanks for your response. The strange thing is that I've got a TEMPLATE > defined at Layer level in MapServer's mapfile: > > LAYER > DEBUG 5 > NAME "RecintosSigpac" > PROJECTION > "init=epsg:23030" > END > METADATA > "wfs_title" "Recintos Sigpac 2009" ## REQUIRED > "wfs_abstract" "Recintos" > "wfs_name" "RecintosSigpac" > "wfs_geometry_element_name" "MS_GEOMETRY" > "wfs_srs" "EPSG:23030" ## Recommended > "wfs_extent" "463506.9978541628 > 4702558.185239193 603185.4988525142 4811754.780732273" > "gml_featureid" "gid" ## REQUIRED > "gml_include_items" "all" > END > TYPE POLYGON > > CONNECTIONTYPE oraclespatial > CONNECTION "admcarto/admca...@ora10gex" > > DATA "GEOMETRY FROM (SELECT * FROM > GT_SIGPAC_REC_2010_ED50) USING UNIQUE gid SRID 82337" #todo el sigpac > > DUMP TRUE ## REQUIRED > > CLASS > NAME "Recintos" > STYLE > OUTLINECOLOR 255 255 255 > END > TEMPLATE "ms_template.html" > END > > > STATUS ON > END # Layer > > The thing is that with the following instruction: > > OpenLayers.Request.POST({url: this.onlineResource, callback: > callbackFunction, data: filter}); > > Having this.onlineResource = > http://192.168.1.65/cgi-bin/mapserv.exe?map=../htdocs/MFD/ejemplo_wfs. > map& > data = filter for getFeature Request > > I don't have any troubles, I get the features correctly. But when I try to > make the same request over the proxy, that's when then troubles come: > > OpenLayers.Request.POST({url: networkSettings.proxyURL, callback: > callbackFunction, params: {url: this.onlineResource, method: "POST", > data: filter}}); > > Having: > > networkSettings.proxyURL = http://192.168.1.65/webproxy.php? > filter = filter for getFeature Request > > I've tried, also, to use the parameter proxy but without success, in fact, I > don't get anything, no error, no response, nothing at all. > > Apache log: > > 192.168.1.65 - - [22/Jun/2010:09:13:47 +0200] "POST > /webproxy.php?http%3A%2F%2F192.168.1.65%2Fcgi-bin%2Fmapserv.exe%3Fmap% > 3D..%2Fhtdocs%2FMFD%2Fejemplo_wfs.map%26%26url%3Dhttp%253A%252F%252F19 > 2.168.1.65%252Fcgi-bin%252Fmapserv.exe%253Fmap%253D..%252Fhtdocs%252FM > FD%252Fejemplo_wfs.map%2526%26method%3DPOST%26data%3D%253C%253Fxml%252 > 0version%253D%25221.0%2522%2520%253F%253E%253Cwfs%253AGetFeature%2520s > ervice%253D%2522WFS%2522%2520version%253D%25221.1.0%2522%2520outputFor > mat%253D%2522text%252Fxml%253B%2520subtype%253Dgml%252F3.1.1%2522%2520 > xmlns%253Awfs%253D%2522http%253A%252F%252Fwww.opengis.net%252Fwfs%2522 > %2520xmlns%253Aogc%253D%2522http%253A%252F%252Fwww.opengis.net%252Fogc > %2522%2520xmlns%253Axsi%253D%2522http%253A%252F%252Fwww.w3.org%252F200 > 1%252FXMLSchema-instance%2522%2520xsi%253AschemaLocation%253D%2522http > %253A%252F%252Fwww.opengis.net%252Fwfs%2520..%252Fwfs%252F1.1.0%252FWF > S.xsd%2522%253E%253Cwfs%253AQuery%2520typeName%253D%2522RecintosSigpac > %2522%253E%253CPropertyName%253EmsGeometry%253C%252FPropertyName%253E% > 250A%2509%2509%2509%2509%2520%253CFilter%253E%250A%2509%2509%2509%2509 > %2509%253COr%253E%250A%2509%2509%2509%2509%2509%2509%253CAnd%253E%250A > %2509%2509%2509%2509%2509%2509%2509%253CPropertyIsEqualTo%253E%250A%25 > 09%2509%2509%2509%2509%2509%2509%2509%253CPropertyName%253EPROVINCIA%2 > 53C%252FPropertyName%253E%253CLiteral%253E1%253C%252FLiteral%253E%250A > %2509%2509%2509%2509%2509%2509%2509%253C%252FPropertyIsEqualTo%253E%25 > 0A%2509%2509%2509%2509%2509%2509%2509%253CPropertyIsEqualTo%253E%250A% > 2509%2509%2509%2509%2509%2509%2509%2509%253CPropertyName%253EMUNICIPIO > %253C%252FPropertyName%253E%253CLiteral%253E1%253C%252FLiteral%253E%25 > 0A%2509%2509%2509%2509%2509%2509%2509%253C%252FPropertyIsEqualTo%253E% > 250A%2509%2509%2509%2509%2509%2509%2509%253CPropertyIsEqualTo%253E%250 > A%2509%2509%2509%2509%2509%2509%2509%2509%253CPropertyName%253EPOLIGON > O%253C%252FPropertyName%253E%253CLiteral%253E1%253C%252FLiteral%253E%2 > 50A%2509%2509%2509%2509%2509%2509%2509%253C%252FPropertyIsEqualTo%253E > %250A%2509%2509%2509%2509%2509%2509%2509%253CPropertyIsEqualTo%253E%25 > 0A%2509%2509%2509%2509%2509%2509%2509%2509%253CPropertyName%253EPARCEL > A%253C%252FPropertyName%253E%253CLiteral%253E1%253C%252FLiteral%253E%2 > 50A%2509%2509%2509%2509%2509%2509%2509%253C%252FPropertyIsEqualTo%253E > %250A%2509%2509%2509%2509%2509%2509%2509%253CPropertyIsEqualTo%253E%25 > 0A%2509%2509%2509%2509%2509%2509%2509%2509%253CPropertyName%253ERECINT > O%253C%252FPropertyName%253E%253CLiteral%253E1%253C%252FLiteral%253E%2 > 50A%2509%2509%2509%2509%2509%2509%2509%253C%252FPropertyIsEqualTo%253E > %250A%2509%2509%2509%2509%2509%2509%253C%252FAnd%253E%250A%2509%2509%2 > 509%2509%2509%2509%253CAnd%253E%250A%2509%2509%2509%2509%2509%2509%250 > 9%253CPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%2509%2509%2 > 509%253CPropertyName%253EPROVINCIA%253C%252FPropertyName%253E%253CLite > ral%253E1%253C%252FLiteral%253E%250A%2509%2509%2509%2509%2509%2509%250 > 9%253C%252FPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%2509%2 > 509%253CPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%2509%2509 > %2509%253CPropertyName%253EMUNICIPIO%253C%252FPropertyName%253E%253CLi > teral%253E1%253C%252FLiteral%253E%250A%2509%2509%2509%2509%2509%2509%2 > 509%253C%252FPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%2509 > %2509%253CPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%2509%25 > 09%2509%253CPropertyName%253EPOLIGONO%253C%252FPropertyName%253E%253CL > iteral%253E1%253C%252FLiteral%253E%250A%2509%2509%2509%2509%2509%2509% > 2509%253C%252FPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%250 > 9%2509%253CPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%2509%2 > 509%2509%253CPropertyName%253EPARCELA%253C%252FPropertyName%253E%253CL > iteral%253E86%253C%252FLiteral%253E%250A%2509%2509%2509%2509%2509%2509 > %2509%253C%252FPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%25 > 09%2509%253CPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%2509% > 2509%2509%253CPropertyName%253ERECINTO%253C%252FPropertyName%253E%253C > Literal%253E1%253C%252FLiteral%253E%250A%2509%2509%2509%2509%2509%2509 > %2509%253C%252FPropertyIsEqualTo%253E%250A%2509%2509%2509%2509%2509%25 > 09%253C%252FAnd%253E%250A%2509%2509%2509%2509%2509%253C%252FOr%253E%25 > 0A%2509%2509%2509%2509%253C%252FFilter%253E%2520%250A%2509%2509%2509%2 > 53C%252Fwfs%253AQuery%253E%253C%252Fwfs%253AGetFeature%253E HTTP/1.1" > 200 - > > Maybe there is something wrong with webproxy.php??? > > Thanks in advance. > > David, > > I just skimmed the text of post XML, but if your OpenLayers app is sending a > query to MapServer, your layer will need a template. In the case of WFS, I > don't think that you need a real template file. But, you still might need an > entry in your LAYER that is something like TEMPLATE "dummy.html". > > David. > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of David > Alda Fernandez de Lezea > Sent: Monday, June 21, 2010 6:59 AM > To: [email protected] > Subject: [mapserver-users] RV: [OpenLayers-Users] Strange behaviour > with OpenLayers.Request.POST and MapServer > > > Hi list, > > I posted this question in OpenLayers mailing list but without response, maybe > here someone knwos what could be happening. I'm trying to load some data from > a remote WFS Server (MapServer). At the beginning I used > OpenLayers.Request.POST({url: this.onlineResource, callback: > callbackFunction, method: 'POST', data: filter}); to load the features and it > worked perfectly, but now, due to some architecture issues, I have to make > the request over a proxy script made in php, but I don't get the features. I > don't get any OpenLayers error but I get an error from MapServer: > > Error: > mapserv(): Web application error. Traditional BROWSE mode requires a TEMPLATE > in the WEB section, but none was provided. > > Request: > > OpenLayers.Request.POST({url: networkSettings.proxyURL + > "?method=POST&url=" + escape(this.onlineResource) + "&data=" + filtro, > callback: callbackFunction, method: 'POST', headers: {"Content-Type": > "text/xml; charset=utf-8"}}); > > Web Proxy: > > <? > > $strURL = @$_REQUEST["url"]; > $strMethod = @$_REQUEST["method"]; > $strData = @$_REQUEST["data"]; > > $ch = curl_init(); > curl_setopt($ch, CURLOPT_URL, $strURL); > if ($strMethod == "POST"){ > curl_setopt($ch, CURLOPT_POST, 1); > curl_setopt($ch, CURLOPT_POSTFIELDS, $strData); > } > > $data = curl_exec($ch); > curl_close($ch); > > ?> > > In Firebug I can see all the parameters: > > data <?xml version="1.0" ?><wfs:GetFeature service="WFS" version="1.1.0" > outputFormat="text/xml; subtype=gml/3.1.1" > xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.opengis.net/wfs > ../wfs/1.1.0/WFS.xsd"><wfs:Query > typeName="RecintosSigpac"><PropertyName>msGeometry</PropertyName> > <Filter><Or><And><PropertyIsEqualTo><PropertyName>PROVINCIA</PropertyName><Literal>1</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>MUNICIPIO</PropertyName><Literal>1</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>POLIGONO</PropertyName><Literal>1</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>PARCELA</PropertyName><Literal>1</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>RECINTO</PropertyName><Literal>1</Literal></PropertyIsEqualTo></And><And><PropertyIsEqualTo><PropertyName>PROVINCIA</PropertyName><Literal>1</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>MUNICIPIO</PropertyName><Literal>1</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>POLIGONO</PropertyName><Literal>1</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>PARCELA</PropertyName><Literal>86</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>RECINTO</PropertyName><Literal>1</Literal></PropertyIsEqualTo></And></Or></Filter> > </wfs:Query></wfs:GetFeature> > method POST > url > http://192.168.1.65/cgi-bin/mapserv.exe?map=../htdocs/MFD/ejemplo_wfs.map& > > And in Apache access.log I get : > > 192.168.1.65 - - [21/Jun/2010:13:44:56 +0200] "POST > /webproxy.php?&url=http%3A%2F%2F192.168.1.65%2Fcgi-bin%2Fmapserv.exe%3 > Fmap%3D..%2Fhtdocs%2FMFD%2Fejemplo_wfs.map%26&method=POST&data=%3C%3Fx > ml%20version%3D%221.0%22%20%3F%3E%3Cwfs%3AGetFeature%20service%3D%22WF > S%22%20version%3D%221.1.0%22%20outputFormat%3D%22text%2Fxml%3B%20subty > pe%3Dgml%2F3.1.1%22%20xmlns%3Awfs%3D%22http%3A%2F%2Fwww.opengis.net%2F > wfs%22%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%20xmln > s%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20 > xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.opengis.net%2Fwfs%20..%2Fwf > s%2F1.1.0%2FWFS.xsd%22%3E%3Cwfs%3AQuery%20typeName%3D%22RecintosSigpac > %22%3E%3CPropertyName%3EmsGeometry%3C%2FPropertyName%3E%0A%09%09%09%09 > %20%3CFilter%3E%0A%09%09%09%09%09%3COr%3E%0A%09%09%09%09%09%09%3CAnd%3 > E%0A%09%09%09%09%09%09%09%3CPropertyIsEqualTo%3E%0A%09%09%09%09%09%09% > 09%09%3CPropertyName%3EPROVINCIA%3C%2FPropertyName%3E%3CLiteral%3E1%3C > %2FLiteral%3E%0A%09%09%09%09%09%09%09%3C%2FPropertyIsEqualTo%3E%0A%09% > 09%09%09%09%09%09%3CPropertyIsEqualTo%3E%0A%09%09%09%09%09%09%09%09%3C > PropertyName%3EMUNICIPIO%3C%2FPropertyName%3E%3CLiteral%3E1%3C%2FLiter > al%3E%0A%09%09%09%09%09%09%09%3C%2FPropertyIsEqualTo%3E%0A%09%09%09%09 > %09%09%09%3CPropertyIsEqualTo%3E%0A%09%09%09%09%09%09%09%09%3CProperty > Name%3EPOLIGONO%3C%2FPropertyName%3E%3CLiteral%3E1%3C%2FLiteral%3E%0A% > 09%09%09%09%09%09%09%3C%2FPropertyIsEqualTo%3E%0A%09%09%09%09%09%09%09 > %3CPropertyIsEqualTo%3E%0A%09%09%09%09%09%09%09%09%3CPropertyName%3EPA > RCELA%3C%2FPropertyName%3E%3CLiteral%3E1%3C%2FLiteral%3E%0A%09%09%09%0 > 9%09%09%09%3C%2FPropertyIsEqualTo%3E%0A%09%09%09%09%09%09%09%3CPropert > yIsEqualTo%3E%0A%09%09%09%09%09%09%09%09%3CPropertyName%3ERECINTO%3C%2 > FPropertyName%3E%3CLiteral%3E1%3C%2FLiteral%3E%0A%09%09%09%09%09%09%09 > %3C%2FPropertyIsEqualTo%3E%0A%09%09%09%09%09%09%3C%2FAnd%3E%0A%09%09%0 > 9%09%09%09%3CAnd%3E%0A%09%09%09%09%09%09%09%3CPropertyIsEqualTo%3E%0A% > 09%09%09%09%09%09%09%09%3CPropertyName%3EPROVINCIA%3C%2FPropertyName%3 > E%3CLiteral%3E1%3C%2FLiteral%3E%0A%09%09%09%09%09%09%09%3C%2FPropertyI > sEqualTo%3E%0A%09%09%09%09%09%09%09%3CPropertyIsEqualTo%3E%0A%09%09%09 > %09%09%09%09%09%3CPropertyName%3EMUNICIPIO%3C%2FPropertyName%3E%3CLite > ral%3E1%3C%2FLiteral%3E%0A%09%09%09%09%09%09%09%3C%2FPropertyIsEqualTo > %3E%0A%09%09%09%09%09%09%09%3CPropertyIsEqualTo%3E%0A%09%09%09%09%09%0 > 9%09%09%3CPropertyName%3EPOLIGONO%3C%2FPropertyName%3E%3CLiteral%3E1%3 > C%2FLiteral%3E%0A%09%09%09%09%09%09%09%3C%2FPropertyIsEqualTo%3E%0A%09 > %09%09%09%09%09%09%3CPropertyIsEqualTo%3E%0A%09%09%09%09%09%09%09%09%3 > CPropertyName%3EPARCELA%3C%2FPropertyName%3E%3CLiteral%3E86%3C%2FLiter > al%3E%0A%09%09%09%09%09%09%09%3C%2FPropertyIsEqualTo%3E%0A%09%09%09%09 > %09%09%09%3CPropertyIsEqualTo%3E%0A%09%09%09%09%09%09%09%09%3CProperty > Name%3ERECINTO%3C%2FPropertyName%3E%3CLiteral%3E1%3C%2FLiteral%3E%0A%0 > 9%09%09%09%09%09%09%3C%2FPropertyIsEqualTo%3E%0A%09%09%09%09%09%09%3C% > 2FAnd%3E%0A%09%09%09%09%09%3C%2FOr%3E%0A%09%09%09%09%3C%2FFilter%3E%20 > %0A%09%09%09%3C%2Fwfs%3AQuery%3E%3C%2Fwfs%3AGetFeature%3E > > HTTP/1.1" 200 2508 > > This seems to be OK, isn't it? > > Am I doing something wrong with the new request?? > > Thanks in advance. > > Un saludo, > > ······································································ > ············ > > David Alda Fernández de Lezea > Lurralde eta Biodibertsitate Saila / Dpto. de Territorio y > Biodiversidad > > IKT > Granja Modelo s/n · 01192 · Arkaute (Araba) > > ·················································································· > Tlfnos.: 945-00-32-95 Fax: 945-00.32.90 > ·················································································· > email: [email protected] web: www.ikt.es > ······································································ > ············ _______________________________________________ > Users mailing list > [email protected] > http://openlayers.org/mailman/listinfo/users > _______________________________________________ > mapserver-users mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/mapserver-users > _______________________________________________ > Users mailing list > [email protected] > http://openlayers.org/mailman/listinfo/users Regards, -- Christopher Schmidt Nokia _______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
