using System; using System.Collections; /* * do an `export QUERY_STRING=foo\=baz\&` before testing this program */ namespace WebSharp { public class WebRequest { private IDictionary EnvVars; private IDictionary QueryParsed; public WebRequest () { } public void ReadRequest () { this.EnvVars = Environment.GetEnvironmentVariables (); if (EnvVars["QUERY_STRING"] != null) { String queryString = (String) EnvVars["QUERY_STRING"]; Console.WriteLine ("ReadRequest()::" + queryString); this.ParseQuery (queryString); //this.ParseQuery(); } } //public void ParseQuery() public void ParseQuery (String queryString) { int end = 0, j = 0; bool processed = false; //String queryString=(String) EnvVars["QUERY_STRING"]; Console.WriteLine ("ParseQuery()::" + queryString); //the query string gets destroyed into a //set of parsed values //no problem about that //QueryParsed=new Hashtable(); while (queryString.IndexOf ("&") != -1 && queryString.IndexOf ("=") != -1) { end = queryString.IndexOf ("&"); String dat = queryString.Substring (0, end); //PutQueryVar(dat); start if (dat.IndexOf ("=") != -1) { String key = dat.Substring (0, dat.IndexOf ("=")); String val = dat.Substring (dat.IndexOf ("=") + 1); Console.WriteLine (key + " => " + val); // I wish I had a Hashtable to put it into } //end PutQueryVar if (end < queryString.Length)end++; queryString = queryString.Substring (end); processed = true; } //but some browsers sumbit single values as //?query=ok //without the & at the end;there fore if (queryString.IndexOf("&")==-1 && queryString.IndexOf("=")!=-1) { if (queryString.IndexOf ("=") != -1) { String key1 = queryString.Substring (0, queryString.IndexOf ("=")); String val1 =queryString.Substring (queryString.IndexOf ("=") + 1); Console.WriteLine (key1 + " => " + val1); } //PutQueryVar(dat); } } public String GetEnvVars (String key) { return (String) this.EnvVars[key]; } };//class public class Pnetcgi { public static void Main () { WebRequest req = new WebRequest (); Console.WriteLine("What error could this be ?"); Console.WriteLine(req.GetEnvVars("QUERY_STRING")); req.ReadRequest (); } };//class };//namespace