I got a walkaround to address this issue by trying. Here is the solution:
instead of using loadparams(), just assign the querystring in the post request
to OWSRequest.
It worked. :-)
public void ProcessRequest (HttpContext context) {
try
{
OWSRequest req = new OWSRequest();
System.Collections.Specialized.NameValueCollection queryStr =
context.Request.QueryString;
for (int i = 0; i < queryStr.Count; ++i)
req.setParameter(queryStr.GetKey(i), queryStr.Get(i));
if (context.Request.HttpMethod == "POST")
{
StreamReader reader = new
StreamReader(context.Request.InputStream, context.Request.ContentEncoding);
//System.Text.Encoding.UTF8
String sXMLRequest = reader.ReadToEnd();
req.type = MS_REQUEST_TYPE.MS_POST_REQUEST;
req.postrequest = sXMLRequest;
}
...
Date: Fri, 10 Sep 2010 09:36:04 +0200
Subject: Re: [mapserver-users] C# mapscripts and WFS Service , xml-encoded Post
Request with openlayers
From: [email protected]
To: [email protected]
CC: [email protected]
Hi,
Currently loadParams can only be called within the context of a CGI process and
it may not be usable ny an ASP.NET application. However I'll inversigate the
approach whether it could be made suitable for use in ASP.NET environment too.
Best regards,
Tamas
2010/9/10 Fuming Li <[email protected]>
Hi, I 'm currently deploying a WFS Server with C# mapscripts. The
Request issued by openlayers is xml-encoded post request.
When I
tried to use "loadparam", it exited abnormally. So I had to parse
parameter by myself. So my question is: do I have to parse the
xml-encoded post request manually?
is there a function I can use to
parse the post request?
WFS Service:
public class MapWFS : IHttpHandler {
public void ProcessRequest
(HttpContext context) {
try
{
OWSRequest req =
new OWSRequest();
System.Collections.Specialized.NameValueCollection queryStr =
context.Request.Params;
//req.loadParams(); can't call this function, it will exit immediately.
req.setParameter("service", "WFS");
req.setParameter("version", "1.0.0");
req.setParameter("request", "getFeature");
for (int i = 0; i
< queryStr.Count; ++i)
{
req.setParameter(queryStr.GetKey(i), queryStr.Get(i));
}
string mapFileName =
ConfigurationManager.AppSettings["MapFilePath"];
mapObj map = new
mapObj(context.Server.MapPath(mapFileName));
...
mapscript.msIO_installStdoutToBuffer();
map.OWSDispatch(req);
context.Response.ContentType =
mapscript.msIO_stripStdoutBufferContentType();
context.Response.BinaryWrite(mapscript.msIO_getStdoutBufferBytes());
mapscript.msIO_resetHandlers();
OpenLayers:
var wfs = new
OpenLayers.Layer.Vector("WFSCELL", {
strategies:
[new OpenLayers.Strategy.BBOX()],
isBaseLayer: true,
styleMap:
styleMap,
service:
wfs,
Version:
"1.0.0",
TypeName:"cell",
protocol:
new OpenLayers.Protocol.WFS({
url:
"MapWFS.ashx",
featureType: "cell",
featurePrefix: "cs" ,
featureNS: "http://www.openplans.org/topp",
geometryName: 'msGeometry'
})
});
wfs.isBaseLayer = true;
map.addLayer(wfs);
content of the post-request:
<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs"
service="WFS" version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<wfs:Query typeName="cs:cell"
xmlns:cosunet="http://www.openplans.org/topp">
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:BBOX>
<ogc:PropertyName>msGeometry</ogc:PropertyName>
<gml:Box xmlns:gml="http://www.opengis.net/gml"
srsName="EPSG:4326"><gml:coordinates decimal="." cs="," ts="
">110.298828125,28.1875
127.701171875,33.8125</gml:coordinates></gml:Box>
</ogc:BBOX>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>
From: [email protected]
To: [email protected]
Date: Thu, 9 Sep 2010 00:44:30 +0000
Subject: [mapserver-users] C# mapscripts and WFS Service , xml-encoded Post
Request with openlayers
Hi, I 'm currently deploying a WFS Server with C# mapscripts. The Request
issued by openlayers is xml-encoded post request.
When I tried to use "loadparam", it exited abnormally. So I had to parse
parameter by myself. So my question is: do I have to parse the xml-encoded
post request manually?
is there a function I can use to parse the post request?
Thanks and Best Request,
William
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users
SZZSZZSZZSZZSZZ _______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users