利用WebRequest发送带有认证信息的HTTP请求并取回响应

问题

如何发送一个带有网络认证证书的HTTP请求并返回相应的HTTP响应。

设计

创建一个 WebRequest对象和一个NetworkCredential对象。把NetworkCredential对象作为WebRequest对象的 Credentials属性赋给它,并且通过WebRequest.GetResponse()方法返回HTTP响应。

方案

string uri = " http://server/path/WebForm.aspx";

WebRequest wreq = WebRequest.Create(uri);

string uid = "someDomainUserID";

string pwd = "theDomainPassword";

string domain = "theDomainName";

NetworkCredential nc = new NetworkCredential(uid, pwd, domain);

wreq.Credentials = nc;

Console.WriteLine("Sending authenticated request to " + uri);

WebResponse wres = wreq.GetResponse();

Stream st = wres.GetResponseStream();

StreamReader sr = new StreamReader(st);

string res = sr.ReadToEnd();

sr.Close();

st.Close();

Console.WriteLine("HTTP Response is ");

Console.WriteLine(res);

注解

如果需要发 送一个带有网络认证证书(用户ID、域,以及密码)的HTTP请求 ,则可以使用WebRequest和WebResponse类。这些类位于System.Web命名空间,缺省情况下这个命名空间对于控制台程序来说是不 可访问的,所以必须要添加一个关于System.Web.dll文件的工程引用。请注意,WebRequest对象不是利用new关键字通过构造函数来创 建的,而是利用工厂机制(factory mechanism)通过Create()方法来创建的。创建NetworkCredential对象之后,可以把这个对象与WebRequest对象相 关联。接下来调用WebRequest.GetResponse()方法返回的是一个WebResponse对象;你可能预计需要显式地调用一个 “Send”方法,实际上不需要。HTTP响应的数据流(stream),和其他数据流一样,可以被绑定到一个StreamReader对象上,然后你就 可以通过ReadToEnd()方法把整个HTTP响应作为一个字符串取回。

WebRequest 和WebResponse类实际上都是抽象基类(abstract base classes)。在实际工作中,WebRequest-WebResponse更适合用来处理相对较为简单的带认证信息的HTTP请求。如果认证信息不 是必需的,那么使用WebClient类要更好一些。如果你需要发送一个HTTP POST请求,那么HttpWebRequest和HttpWebResponse类通常是更好的选择。WebRequest和WebResponse类 支持异步调用,但是对于轻量级的自动化程序来说,通常也用不到。本节的这些代码可以用来检查一个ASP.NET程序的响应,但是要将这部分代码扩展成一个 自动化测试程序,则需要根据给定的期望值来检查HTTP响应,

转载于:https://www.cnblogs.com/bccu/archive/2007/08/17/860111.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值