一、演示

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms;
namespace server
{
public partial class FrmMain : Form
{
public static string _listenerUri = ConfigurationManager.AppSettings["HttpIP"];
public HttpListener _listener;
public FrmMain()
{
InitializeComponent();
}
private void ListenerHandle(IAsyncResult result)
{
try
{
if (_listener.IsListening)
{
_listener.BeginGetContext(ListenerHandle, result); // 继续监听
HttpListenerContext context = _listener.EndGetContext(result);
// 解析Request请求
HttpListenerRequest request = context.Request;
string content = "";
txtLine.BeginInvoke(new Action(() => { txtLine.AppendText(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "request.Url:" + request.Url + Environment.NewLine); }));
switch (request.HttpMethod)
{
case "POST":
{
Stream stream = context.Request.InputStream;
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
content = reader.ReadToEnd();
}
break;
case "GET":
{
NameValueCollection myCol = new NameValueCollection();
myCol = request.QueryString;
//content = myCol.GetKey(0) + myCol.Get(0);
foreach (String str in myCol.AllKeys)
{
content = content + " " + str + myCol[str];
}
}
break;
}
txtLine.BeginInvoke(new Action(() => { txtLine.AppendText(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "收到数据:" + content + Environment.NewLine); }));
// 构造Response响应
HttpListenerResponse response = context.Response;
response.StatusCode = 200;
response.ContentType = "application/json;charset=UTF-8";
response.ContentEncoding = Encoding.UTF8;
response.AppendHeader("Content-Type", "application/json;charset=UTF-8");
using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
{
writer.Write("welcome");
writer.Close();
response.Close();
}
}
}
catch (Exception ex)
{
txtLine.BeginInvoke(new Action(() => { txtLine.AppendText(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ex.ToString() + Environment.NewLine); }));
}
}
/// <summary>
/// 初始化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmMain_Load(object sender, EventArgs e)
{
txtHttpIP.Text = _listenerUri;
}
/// <summary>
/// 启用 HTTP请求监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStart_Click(object sender, EventArgs e)
{
_listener = new HttpListener();
_listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
_listener.Prefixes.Add(_listenerUri);
_listener.Start();
txtLine.AppendText("启用数据监听!" + Environment.NewLine);
_listener.BeginGetContext(ListenerHandle, _listener);
btnStart.Enabled = false;
btnStop.Enabled = true;
}
/// <summary>
/// 停止 HTTP请求监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStop_Click(object sender, EventArgs e)
{
if (_listener != null)
{
_listener.Close();
txtLine.AppendText("停止数据监听!" + Environment.NewLine);
btnStart.Enabled = true;
btnStop.Enabled = false;
}
}
}
}
二、根据请求判断处理【2022-03-21更新】

浏览器访问http://10.251.251.5/sync?billno=ck202202211001&itemno=1
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms;
namespace server
{
public partial class FrmMain : Form
{
public static string _listenerUri = ConfigurationManager.AppSettings["HttpIP"];
public HttpListener _listener;
public FrmMain()
{
InitializeComponent();
}
private void ListenerHandle(IAsyncResult result)
{
try
{
if (_listener.IsListening)
{
_listener.BeginGetContext(ListenerHandle, result); // 继续监听
HttpListenerContext context = _listener.EndGetContext(result);
// 解析Request请求
HttpListenerRequest request = context.Request;
string content = "";
//txtLine.BeginInvoke(new Action(() => { txtLine.AppendText(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "request.Url:" + request.Url + Environment.NewLine); }));
// 获取请求类型"POST","GET" 等等 (此处转成小写字母)
var httpMethod = request.HttpMethod.ToLower();
// 查询 "域名/IP" 与 "?" 之间的内容
var actionName = request.Url?.AbsolutePath;
// 查询地址中"?"后面的键值对
var queryString = request.QueryString;
switch (actionName)
{
case "/sync":
{
/*
NameValueCollection myCol = new NameValueCollection();
myCol = queryString;
//content = myCol.GetKey(0) + myCol.Get(0);
foreach (String str in myCol.AllKeys)
{
content = content + " " + str + myCol[str];
}
*/
string billno = queryString.Get("billno");
string itemno = queryString.Get("itemno");
content = content + " billno=" + queryString.Get("billno")
+ " itemno=" + queryString.Get("itemno");
}
break;
case "/tran":
{
}
break;
}
/*
switch (httpMethod)
{
case "POST":
{
Stream stream = context.Request.InputStream;
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
content = reader.ReadToEnd();
}
break;
case "GET":
{
NameValueCollection myCol = new NameValueCollection();
myCol = request.QueryString;
//content = myCol.GetKey(0) + myCol.Get(0);
foreach (String str in myCol.AllKeys)
{
content = content + " " + str + myCol[str];
}
}
break;
}
*/
txtLine.BeginInvoke(new Action(() => { txtLine.AppendText(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "收到数据:" + content + Environment.NewLine); }));
// 构造Response响应
HttpListenerResponse response = context.Response;
response.StatusCode = 200;
response.ContentType = "application/json;charset=UTF-8";
response.ContentEncoding = Encoding.UTF8;
response.AppendHeader("Content-Type", "application/json;charset=UTF-8");
using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
{
writer.Write("welcome");
writer.Close();
response.Close();
}
}
}
catch (Exception ex)
{
txtLine.BeginInvoke(new Action(() => { txtLine.AppendText(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ex.ToString() + Environment.NewLine); }));
}
}
/// <summary>
/// 初始化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmMain_Load(object sender, EventArgs e)
{
txtHttpIP.Text = _listenerUri;
}
/// <summary>
/// 启用 HTTP请求监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStart_Click(object sender, EventArgs e)
{
_listener = new HttpListener();
_listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
_listener.Prefixes.Add(_listenerUri);
_listener.Start();
txtLine.AppendText("启用数据监听!" + Environment.NewLine);
_listener.BeginGetContext(ListenerHandle, _listener);
btnStart.Enabled = false;
btnStop.Enabled = true;
}
/// <summary>
/// 停止 HTTP请求监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStop_Click(object sender, EventArgs e)
{
if (_listener != null)
{
_listener.Close();
txtLine.AppendText("停止数据监听!" + Environment.NewLine);
btnStart.Enabled = true;
btnStop.Enabled = false;
}
}
}
}