private void AddPerson(HttpListenerResponse response, string url) { var parameters = WebServer.DecodeParam(url); Person person = new Person(); foreach (var param in parameters) { if (param.Name.ToLower() == "first") { person.First = param.Value; } else if (param.Name.ToLower() == "last") { person.Last = param.Value; } } if ((person.Last != string.Empty) && (person.First != string.Empty)) { lock (_lock) { _persons.Add(person); } WebServer.OutputHttpCode(response, HttpStatusCode.Accepted); } else { WebServer.OutputHttpCode(response, HttpStatusCode.BadRequest); } }
private static void ApiDefault(WebServerEventArgs e) { string ret = $"HTTP/1.1 200 OK\r\nContent-Type: text/plain; charset=UTF-8\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n"; ret += $"Your request type is: {e.Context.Request.HttpMethod}\r\n"; ret += $"The request URL is: {e.Context.Request.RawUrl}\r\n"; var parameters = WebServer.DecodeParam(e.Context.Request.RawUrl); if (parameters != null) { ret += "List of url parameters:\r\n"; foreach (var param in parameters) { ret += $" Parameter name: {param.Name}, value: {param.Value}\r\n"; } } if (e.Context.Request.Headers != null) { ret += $"Number of headers: {e.Context.Request.Headers.Count}\r\n"; } else { ret += "There is no header in this request\r\n"; } foreach (var head in e.Context.Request.Headers?.AllKeys) { ret += $" Header name: {head}, Values:"; var vals = e.Context.Request.Headers.GetValues(head); foreach (var val in vals) { ret += $"{val} "; } ret += "\r\n"; } if (e.Context.Request.ContentLength64 > 0) { ret += $"Size of content: {e.Context.Request.ContentLength64}\r\n"; byte[] buff = new byte[e.Context.Request.ContentLength64]; e.Context.Request.InputStream.Read(buff, 0, buff.Length); ret += $"Hex string representation:\r\n"; for (int i = 0; i < buff.Length; i++) { ret += buff[i].ToString("X") + " "; } } WebServer.OutPutStream(e.Context.Response, ret); }
private static void ParamHtml(WebServerEventArgs e) { var url = e.Context.Request.RawUrl; // Test with parameters var parameters = WebServer.DecodeParam(url); string toOutput = "<html><head>" + "<title>Hi from nanoFramework Server</title></head><body>Here are the parameters of this URL: <br />"; foreach (var par in parameters) { toOutput += $"Parameter name: {par.Name}, Value: {par.Value}<br />"; } toOutput += "</body></html>"; WebServer.OutPutStream(e.Context.Response, toOutput); }
public void UrlEncode(WebServerEventArgs e) { var rawUrl = e.Context.Request.RawUrl; var paramsUrl = WebServer.DecodeParam(rawUrl); string ret = "Parameters | Encoded | Decoded"; foreach (var param in paramsUrl) { ret += $"{param.Name} | "; ret += $"{param.Value} | "; // Need to wait for latest version of System.Net // See https://github.com/nanoframework/lib-nanoFramework.System.Net.Http/blob/develop/nanoFramework.System.Net.Http/Http/System.Net.HttpUtility.cs ret += $"{System.Web.HttpUtility.UrlDecode(param.Value)}"; ret += "\r\n"; } WebServer.OutPutStream(e.Context.Response, ret); }