c#使用HttpListener监听post及get请求方法

c#使用HttpListener监听post及get请求方法示范

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
  
using System.Net;
using System.IO;
  
namespace testHttpListener
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
  
        public HttpListener listener;
  
        private void Form1_Load(object sender, EventArgs e)
        {
            startHttpListen();
            Control.CheckForIllegalCrossThreadCalls = false;
        }
  
  
        public void startHttpListen()
        {
            listener = new HttpListener();
            listener.Prefixes.Add("http://localhost:8888/"); //添加需要监听的url范围
            listener.Start(); //开始监听端口,接收客户端请求
            text_info.Text = "Listening...";
  
            listener.BeginGetContext(ListenerHandle, listener);
  
  
        }
  
        //监听
        private void ListenerHandle(IAsyncResult result)
        {
            try
            {
                //listener = result.AsyncState as HttpListener;
                if (listener.IsListening)
                {
                    listener.BeginGetContext(ListenerHandle, result);
                    HttpListenerContext context = listener.EndGetContext(result);
                    //解析Request请求
                    HttpListenerRequest request = context.Request;
                    string content = "";
                    switch (request.HttpMethod)
                    {
                        case "POST":
                            {
                                Stream stream = context.Request.InputStream;
                                StreamReader reader = new StreamReader(stream, Encoding.UTF8);
                                content = reader.ReadToEnd();
                            }
                            break;
                        case "GET":
                            {
                                var data = request.QueryString;
                            }
                            break;
                    }
                    text_receive.Text += content;
  
                    //构造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("");
                        writer.Close();
                        response.Close();
                    }
                }
  
            }
            catch (Exception ex)
            {
                text_receive.Text += ex.Message;
            }
        }
    }
}

  

posted @   txwtech  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示