HttpListenerServer Get Post
来源:互联网 发布:网络微电影 编辑:程序博客网 时间:2024/05/08 08:52
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Xml.Serialization;
using System.Threading;
using System.Web;
namespace HttpListenerServer
{
class Program
{
static void Main(string[] args)
{
////////////////////////////////////////////////////////
HttpListener listener = new HttpListener();
//using (HttpListener listener = new HttpListener())
{
listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;//= AuthenticationSchemes.Negotiate;
listener.Prefixes.Add("http://localhost:7900/");
//listener.Prefixes.Add("https://localhost:8000/");
listener.Start();
//new Thread(new ThreadStart(delegate
//{
while (true)
{
HttpListenerContext httpListenerContext = listener.GetContext();
httpListenerContext.Response.StatusCode = 200;
String method=httpListenerContext.Request.HttpMethod;
if (method.Trim().ToUpper().Equals("POST"))
{
doPost(httpListenerContext);
}
else if (method.Trim().ToUpper().Equals("GET"))
{
doGet(httpListenerContext);
}
}
listener.Stop();
//})).Start();
//listener.Stop();
}
////////////////////////////////////////////////////////
}
private static void doPost(HttpListenerContext httpListenerContext)
{
String postValues=GetPostValues(httpListenerContext);
Dictionary<String, String> valueDict = PostValues2Dictionary(postValues);
string name = (valueDict != null) ? (valueDict.ContainsKey("name") ? valueDict["name"] : "noNameValue") : "noPostValue";
StreamWriter writer = new StreamWriter(httpListenerContext.Response.OutputStream);
///////////////////////////////////////////
writer.WriteLine("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><title>测试服务器</title></head><body>");
writer.WriteLine("<ul>");
writer.WriteLine(postValues);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.RawUrl);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.QueryString);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.Url);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UrlReferrer);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UserAgent);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UserHostAddress);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UserHostName);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UserLanguages);
writer.WriteLine("</ul>");
///////////////////////////////////////////
writer.WriteLine("<p>Hello, {0}</p>", name);
writer.WriteLine("<ul>");
foreach (string header in httpListenerContext.Request.Headers.Keys)
{
writer.WriteLine("<li><b>{0}:</b> {1}</li>", header, httpListenerContext.Request.Headers[header]);
}
writer.WriteLine("</ul>");
writer.WriteLine("</body></html>");
writer.Close();
httpListenerContext.Response.Close();
}
private static Dictionary<string, string> PostValues2Dictionary(string postValues)
{
//name=jim&age=11
if (String.IsNullOrEmpty(postValues) || String.IsNullOrEmpty(postValues.Trim()))
{
return null;
}
String[] keyValues = postValues.Trim().Split('&');
Dictionary<string, string> dict=new Dictionary<string, string>();
foreach (String key_value in keyValues)
{
int indexOfEqualsSign = key_value.IndexOf('=');
string key = key_value.Substring(0, indexOfEqualsSign);
string val = key_value.Substring(indexOfEqualsSign+1);
dict[key] = val;
}
return dict;
}
private static string GetPostValues(HttpListenerContext httpListenerContext)
{
HttpListenerRequest request= httpListenerContext.Request;
if (!request.HasEntityBody)
{
return null;
}
using (System.IO.Stream body = request.InputStream) // here we have data
{
using (System.IO.StreamReader reader = new System.IO.StreamReader(body, request.ContentEncoding))
{
return reader.ReadToEnd();
}
}
}
private static void doGet(HttpListenerContext httpListenerContext)
{
string name = httpListenerContext.Request.QueryString["name"];
StreamWriter writer = new StreamWriter(httpListenerContext.Response.OutputStream);
///////////////////////////////////////////
writer.WriteLine("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><title>测试服务器</title></head><body>");
writer.WriteLine("<ul>");
writer.WriteLine("GET");
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.RawUrl);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.QueryString);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.Url);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UrlReferrer);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UserAgent);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UserHostAddress);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UserHostName);
writer.WriteLine("<hr>");
writer.WriteLine(httpListenerContext.Request.UserLanguages);
writer.WriteLine("</ul>");
///////////////////////////////////////////
writer.WriteLine("<p>Hello, {0}</p>", name);
writer.WriteLine("<ul>");
foreach (string header in httpListenerContext.Request.Headers.Keys)
{
writer.WriteLine("<li><b>{0}:</b> {1}</li>", header, httpListenerContext.Request.Headers[header]);
}
writer.WriteLine("</ul>");
writer.WriteLine("</body></html>");
writer.Close();
httpListenerContext.Response.Close();
}
}
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta charset="UTF-8">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
<form method="post" action="http://localhost:7900/">
<input type="submit">
</form>
<form method="post" action="http://localhost:7900/">
<input type="text" name="age">
<input type="submit">
</form>
<form method="post" action="http://localhost:7900/">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit">
</form>
<hr>
GET
<hr>
<form method="get" action="http://localhost:7900/">
<input type="submit">
</form>
<form method="get" action="http://localhost:7900/">
<input type="text" name="age">
<input type="submit">
</form>
<form method="get" action="http://localhost:7900/">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit">
</form>
</body>
</html>
- HttpListenerServer Get Post
- post get
- Get, Post
- GET/POST
- get/post
- get post
- get post
- get post
- post get
- post get
- Get && Post
- get & post
- get & post
- get/post
- post & get
- POST,GET
- Get Post
- get post
- navicat破解
- Eclipse设置工作空间编码的问题
- 【USACO14FEB】洛谷2176 Roadblock
- Javascript中变量函数申明优先级
- 多物体缓冲运动js代码大全
- HttpListenerServer Get Post
- 怎样看商户平台的微信支付的费率
- 解决部分win7系统hosts文件不显示的问题
- 【Win10】UAP/UWP/通用 开发之 SplitView
- TabLayout初体验
- 推荐几个技术大牛的博客
- MySQL数据库的进销存
- (数据库遭受攻击)Got a packet bigger than ‘max_allowed_packet’ bytes
- 全局钩子ESC处理