zoukankan      html  css  js  c++  java
  • 用户登录模拟浏览器访问数据库的新形式HttpWebRequest 访问数据库

       在一般的系统中,用户登录大部分都是简单的获取用户名和密码,然后到数据库查询。但是一两个系统的话,可以去访问数据库,然后来获取测试结果。如果是五个,六个系统,甚至更多的系统,都需要建立自己的用户表,而用户可能是一样的。这样的情况下,可能造成一部分的设计麻烦或者代码冗余。但是如果换种方式,有一个标准的数据库,它里面的用户是最最标准的,这个数据库提供给其它系统一个webService,当其它用户登录的时候,系统只需要去访问一个地址,然后传入用户名和密码,静等返回结果。这样的处理,是不是大大的提高了访问效率,也分了层,提高了代码的可维护性。

       你可以把你的代码考虑为一个简单的浏览器,然后通过浏览器去登录系统,具体登录成功还是失败,就看系统的返回结果了。具体怎么实现呢?看下面的这个方法

    View Code
     1  /// <summary>
     2         /// HTTP Request登录请求
     3         /// </summary>
     4         /// <param name="param">可以为空</param>
     5         /// <param name="username">用户名(社员号)</param>
     6         /// <param name="password">密码</param>
     7         /// <returns></returns>
     8         public string SendRequest(string param, string username, string password)
     9         {
    10             try
    11             {
    12                 string url = "http://192.168.1.221/LoginValidateSystem/LoginIndex.aspx?EmployeeCD1="
    13                                 + "" + username + "&EmployeePassword1=" + password + "";//请求的链接地址
    14                 ASCIIEncoding encoding = new ASCIIEncoding(); 
    15                 byte[] data = encoding.GetBytes(param); //将参数转换为字节数组
    16                 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
    17                 request.Method = "POST";//请求方式
    18                 request.ContentType = "application/x-www-form-urlencoded";//请求连接的类型
    19                 request.ContentLength = data.Length; //请求参数的长度
    20                 Stream sm = request.GetRequestStream(); //以数据流的形式传递参数
    21                 sm.Write(data, 0, data.Length);
    22                 sm.Close();
    23                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    24                 if (response.StatusCode.ToString() != "OK")
    25                 {
    26                     return "";
    27                 }
    28                 StreamReader myreader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); //以数据流的形式获取response响应的数据
    29                 string responseText = myreader.ReadToEnd();
    30                 return responseText;
    31             }
    32             catch (Exception)
    33             {
    34                 
    35                 throw;
    36             }
    37         }  

     具体应用中,用到了一些HTTP的知识。真正用起来后会感觉真的方便很多。

  • 相关阅读:
    Swift -- 8.3 多态
    Swift -- 8.2 类的构造与析构
    Swift -- 8.1 继承
    Swift -- 7.6 构造器
    Swift -- 7.5 类型属性,方法
    Swift -- 7.4 方法,下标,可选链
    Swift -- 7.3 类和结构体
    Swift -- 7.2 枚举
    Swift -- 7.1 面向对象简介
    4-5轮选区的不透明度1.7
  • 原文地址:https://www.cnblogs.com/shunxiyuan/p/2818185.html
Copyright © 2011-2022 走看看