zoukankan      html  css  js  c++  java
  • c#使用HttpListener监听post及get请求

    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;
                }
            }
        }
    }
    

      

  • 相关阅读:
    FTP工具类
    Mac下git用户名密码问题
    python3 可能是类似于java的方法重载
    Dos窗口默认设置修改
    登录接口,密码前端密码加密
    编码中存在的问题
    在django项目中使用selenium报错:TypeError: environment can only cantain string
    python实现:base64与图片的转换
    查看电脑支持的文字, .ttf文件
    获取指定目录下的所有文件,直到底
  • 原文地址:https://www.cnblogs.com/webttt/p/14626218.html
Copyright © 2011-2022 走看看