您的位置:首页 > 理论基础 > 计算机网络

用户登录模拟浏览器访问数据库的新形式--HttpWebRequest 访问数据库

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

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

View Code

/// <summary>
/// HTTP Request登录请求
/// </summary>
/// <param name="param">可以为空</param>
/// <param name="username">用户名(社员号)</param>
/// <param name="password">密码</param>
/// <returns></returns>
public string SendRequest(string param, string username, string password)
{
try
{
string url = "http://192.168.1.221/LoginValidateSystem/LoginIndex.aspx?EmployeeCD1="
+ "" + username + "&EmployeePassword1=" + password + "";//请求的链接地址
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(param); //将参数转换为字节数组
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";//请求方式
request.ContentType = "application/x-www-form-urlencoded";//请求连接的类型
request.ContentLength = data.Length; //请求参数的长度
Stream sm = request.GetRequestStream(); //以数据流的形式传递参数
sm.Write(data, 0, data.Length);
sm.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode.ToString() != "OK")
{
return "";
}
StreamReader myreader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); //以数据流的形式获取response响应的数据
string responseText = myreader.ReadToEnd();
return responseText;
}
catch (Exception)
{

throw;
}
}


具体应用中,用到了一些HTTP的知识。真正用起来后会感觉真的方便很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: