zoukankan      html  css  js  c++  java
  • 动态获取页面参数内容

    本文章主要内容为动态的获取页面内容,在地址栏后面输入参数进行相加,最终将结果返回给用户,此程序运行后出现的错误无需理会,只需将程序运行起来就行了,细节问题后续会讲,如:

    http://i.cnblogs.com/add?i=1&j=2,?前面的为处理程序路径,?后面的为请求的参数,以&分割多个参数,注意这是HTTP协议格式,一种规范,一种标准

    static void Main(string[] args)
    {
        Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        serverSocket.Bind(new IPEndPoint(IPAddress.Any, 8888));
        serverSocket.Listen(10);
        while (true)
        {
            Console.WriteLine("等着请求");
            Socket socket = serverSocket.Accept();
            Console.WriteLine("来了请求了");
            string firstline;
            using (NetworkStream stream = new NetworkStream(socket))
            using (StreamReader reader = new StreamReader(stream))
            {
                firstline = reader.ReadLine();//读取GET /1.html HTTP/1.1
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                    if (line.Length <= 0)
                    {
                        break;
                    }
                }
            }
    
            string[] strs = firstline.Split(' ');
            string url = strs[1];//1.html
            string[] strs2 = url.Split('?');//add?i=1&j=2
            string fileAction = strs[0];//add
            string qs = strs2[1];
            Dictionary<string, string> dic = ParseQureyString(qs);
            int i = Convert.ToInt32(dic["i"]);
            int j = Convert.ToInt32(dic["j"]);
    
            using (NetworkStream stream = new NetworkStream(socket))
            using (StreamWriter write = new StreamWriter(stream))
            {
                write.WriteLine("HTTP/1.1 200 OK");
                write.WriteLine();
                write.WriteLine(i + j);
            }
            socket.Disconnect(false);
        }
    }
    /// <summary>
    /// 把i=1&j=2转换为一个Dictionary
    /// </summary>
    /// <param name="qs"></param>
    /// <returns></returns>
    private static Dictionary<string, string> ParseQureyString(string qs)
    {
        Dictionary<string, string> dic = new Dictionary<string, string>();
        string[] strs = qs.Split('&');
        foreach (string str in strs)
        {
            string[] kv = str.Split('=');
            string name = kv[0];
            string value = kv[1];
            dic.Add(name, value);
        }
        return dic;
    }

    判断用户名和密码,把结果返回给客户端

    /login?username=admin&password=123 

    在上面的代码中,将获取到的dic取出来即可

    string username = dic["username"];
    string password = dic["password"];

  • 相关阅读:
    双日历时间段选择控件—daterangepicker(汉化版)
    vue elementui table表格展开行每次只展开一行
    vue-pdf PDF文件预览
    async await
    vuex发送axios请求
    jq调用浏览器下载文件 window.open()
    禁止页面右键、选择、F12操作
    vue 点击一条消息跳转相应的页面且对应相应的大模块和办理状态
    vue-infinite-scroll 滚动加载下一页
    填写流程当前登录人可以填写除自己可填项外还可看到他前面经办人相关填写的内容,且经办人后面的不可见
  • 原文地址:https://www.cnblogs.com/genesis/p/4658784.html
Copyright © 2011-2022 走看看