asp.net 中请求-响应(request-response)的几种方法
2007-08-17 15:33
736 查看
对于Web应用程序来说,最基本的测试类型就是“请
求-响应(request-response)”测试。我们可以通过程序发送一个HTTP请求给Web服务器,Web服务器处理完这个请求之后会发送回来
一个HTTP响应(通常以HTML页面的形式),我们可以捕获这个响应,然后检查它与期望值是否一致。请求和响应的动作通常总是一并出现的,对于轻量级的
自动化测试来说,通常不会发送一个HTTP请求而不取回随后的响应,或者说如果某个HTTP请求不是由你发起的,你也不大会取回与这个HTTP请求对应的
HTTP响应。因此,本章的大多数技术都是告诉你如何发送一个HTTP请求并且取回随后的HTTP响应,或者如何根据期望值检查某个HTTP响应。考虑图
5-1所示的一个简单的ASP.NET Web应用程序:
图5-1 待测Web程序
图5-1所示的Web应用程序,其源代码如下:
<html>
<head>
<script
language="c#" runat="server">
void
Button1_Click(object sender, System.EventArgs e)
{
TextBox1.Text
= "You picked " + DropDownList1.SelectedValue;
}
</script>
</head>
<body>
<h3>Request-Response</h3>
<form id="Form1"
method="post" runat="server">
<p>Choose
one:
<asp:DropDownList
id="DropDownList1" runat="server">
<asp:ListItem
Value="red">red</asp:ListItem>
<asp:ListItem
Value="blue">blue</asp:ListItem>
<asp:ListItem
Value="green">green</asp:ListItem>
</asp:DropDownList>
<p><asp:Button
id="Button1" text="Send" onclick=
"Button1_Click" runat="server" />
<p><asp:TextBox
id="TextBox1" runat="server" /></p>
</form>
</body>
</html>
请注意,为了简单起见,用C#表示的逻辑代码和
HTML的显示代码都放到了一个文件里,而没有采用更为常用的方法通过ASP.NET的代码隐藏(code-behind)机制(当使用Visual
Studio .NET创建Web应用程序时,采用的就是这种机制)把它们存放到不同的文件里。这个ASP.NET
Web应用程序是用C#来编写的,但是本章所讲解的“请求-响应”测试技术,对于任何兼容于.NET的语言编写的ASP.NET应用程序都是适用的。
如果手工来测试这个程序,需要从下拉框列表选择一
种颜色,然后单击Send按钮。从下拉框里选择的这个值会作为HTTP请求的一部分发送给ASP.NET
Web服务器。服务器会处理这个请求并且返回一个HTTP响应。这个响应会发回给客户端的Internet浏览器(IE),在这里,返回的HTML响应以
图5-1所示的更为友好的方式呈现出来。我们必须检查最终的结果以确定HTTP响应的正确性(在本例中,要验证文本框控件中消息)。采用这种方式通过手工
来测试Web应用程序不仅速度慢,而且效率不高,容易出错并且单调乏味。好一点的做法是通过编写轻量级的自动化测试程序来进行测试。
针对“请求-响应”的自动化测试程序通过编程的方式发送一个HTTP请求,这个请求包含的信息与用户通过选择下拉框列表得到的结果是一样的,此外,测试程序通过检查HTTP响应所返回的特定数据,判定这个响应是否正确,例子见图5-2。
图5-2 Request-Response测试运行情况
.NET框架提供了三种基本方法和两种底层的方法用来发送HTTP请求和取回对应的HTTP响应。下面我们按照从最容易使用但是最不灵活,到最不容易使用但最为灵活的顺序,列出发送和取回HTTP数据的5种方法:
l
WebClient:使用极为简单但是不能发送认证信息。
l
WebRequest -WebResponse:赋予你更大的灵活性,包括发送认证信息的能力。
l
HttpWebRequest -HttpWebResponse:更为复杂,但是赋予你更多的控制能力。
l
TcpClient:你可以使用的一个底层类,但是对于轻量级的“请求-响应”自动化测试程序来说,除了一些极为罕见的场景,其他时候都是不需要的。
l
Socket:非常底层的一个类,在自动化测试程序里不常用到。
.NET框
架还提供了一个HttpRequest类,但是这个类是一个基类,并不适合直接使用。本章的这些技术用到了三种较高层次的类(WebClient、
WebRequest-WebResponse和HttpWebRequest-HttpWebResponse)。
求-响应(request-response)”测试。我们可以通过程序发送一个HTTP请求给Web服务器,Web服务器处理完这个请求之后会发送回来
一个HTTP响应(通常以HTML页面的形式),我们可以捕获这个响应,然后检查它与期望值是否一致。请求和响应的动作通常总是一并出现的,对于轻量级的
自动化测试来说,通常不会发送一个HTTP请求而不取回随后的响应,或者说如果某个HTTP请求不是由你发起的,你也不大会取回与这个HTTP请求对应的
HTTP响应。因此,本章的大多数技术都是告诉你如何发送一个HTTP请求并且取回随后的HTTP响应,或者如何根据期望值检查某个HTTP响应。考虑图
5-1所示的一个简单的ASP.NET Web应用程序:
图5-1 待测Web程序
图5-1所示的Web应用程序,其源代码如下:
<html>
<head>
<script
language="c#" runat="server">
void
Button1_Click(object sender, System.EventArgs e)
{
TextBox1.Text
= "You picked " + DropDownList1.SelectedValue;
}
</script>
</head>
<body>
<h3>Request-Response</h3>
<form id="Form1"
method="post" runat="server">
<p>Choose
one:
<asp:DropDownList
id="DropDownList1" runat="server">
<asp:ListItem
Value="red">red</asp:ListItem>
<asp:ListItem
Value="blue">blue</asp:ListItem>
<asp:ListItem
Value="green">green</asp:ListItem>
</asp:DropDownList>
<p><asp:Button
id="Button1" text="Send" onclick=
"Button1_Click" runat="server" />
<p><asp:TextBox
id="TextBox1" runat="server" /></p>
</form>
</body>
</html>
请注意,为了简单起见,用C#表示的逻辑代码和
HTML的显示代码都放到了一个文件里,而没有采用更为常用的方法通过ASP.NET的代码隐藏(code-behind)机制(当使用Visual
Studio .NET创建Web应用程序时,采用的就是这种机制)把它们存放到不同的文件里。这个ASP.NET
Web应用程序是用C#来编写的,但是本章所讲解的“请求-响应”测试技术,对于任何兼容于.NET的语言编写的ASP.NET应用程序都是适用的。
如果手工来测试这个程序,需要从下拉框列表选择一
种颜色,然后单击Send按钮。从下拉框里选择的这个值会作为HTTP请求的一部分发送给ASP.NET
Web服务器。服务器会处理这个请求并且返回一个HTTP响应。这个响应会发回给客户端的Internet浏览器(IE),在这里,返回的HTML响应以
图5-1所示的更为友好的方式呈现出来。我们必须检查最终的结果以确定HTTP响应的正确性(在本例中,要验证文本框控件中消息)。采用这种方式通过手工
来测试Web应用程序不仅速度慢,而且效率不高,容易出错并且单调乏味。好一点的做法是通过编写轻量级的自动化测试程序来进行测试。
针对“请求-响应”的自动化测试程序通过编程的方式发送一个HTTP请求,这个请求包含的信息与用户通过选择下拉框列表得到的结果是一样的,此外,测试程序通过检查HTTP响应所返回的特定数据,判定这个响应是否正确,例子见图5-2。
图5-2 Request-Response测试运行情况
.NET框架提供了三种基本方法和两种底层的方法用来发送HTTP请求和取回对应的HTTP响应。下面我们按照从最容易使用但是最不灵活,到最不容易使用但最为灵活的顺序,列出发送和取回HTTP数据的5种方法:
l
WebClient:使用极为简单但是不能发送认证信息。
l
WebRequest -WebResponse:赋予你更大的灵活性,包括发送认证信息的能力。
l
HttpWebRequest -HttpWebResponse:更为复杂,但是赋予你更多的控制能力。
l
TcpClient:你可以使用的一个底层类,但是对于轻量级的“请求-响应”自动化测试程序来说,除了一些极为罕见的场景,其他时候都是不需要的。
l
Socket:非常底层的一个类,在自动化测试程序里不常用到。
.NET框
架还提供了一个HttpRequest类,但是这个类是一个基类,并不适合直接使用。本章的这些技术用到了三种较高层次的类(WebClient、
WebRequest-WebResponse和HttpWebRequest-HttpWebResponse)。
相关文章推荐
- wp7使用POST请求Asp.net网页时,HttpWebRequest的BeginGetResponse方法抛出NotSupportException异常的解决方法
- 在ASP.NET 2.0中,有时候需要对ASP.NET生成的HTML代码进行处理,或者是保存成静态文件。ASP.NET 提供了直接将请求保存成文件的方法:HttpRequest.SaveAs方法。下面这个方法就是在ASP.NET 2.0中得到ASP.NET
- [转]asp.net Request、Response 响应在此上下文中不可用
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- [备忘]如何在Asp.net MVC,非Controller中获取当前Request,Session,Response等请求信息
- ASP.NET Web API 记录请求响应数据到日志的一个方法
- ASP.NET Web API 记录请求响应数据到日志的一个方法
- 关于ASP.NET中用Response.Write()方法响应导致页面字体变大的问题
- ASP.NET-------get请求,post请求,Request,Response和回发的学习
- ASP.NET环境下XMLHttpRequest中responseText()方法返回值为空问题讨论
- 关于ASP.NET中用Response.Write()方法响应导致页面字体变大的问题
- 关于ASP.NET中用Response.Write()方法响应导致页面字体变大的问题
- ASP.NET Web API 记录请求响应数据到日志的一个方法
- 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
- Asp.net 2.0 Request ,Response 出现乱码 Email乱码 解决方法
- 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
- asp.net request 中有关请求路径 对照表
- asp.net页面之间传递参数的几种方法
- asp.net导出数据到Excel的几种方法(2/3)
- 【asp.net】常用内置对象(Request,Response、server、Cookies)