发送带有认证信息的HTTP请求并取回响应
问题
如何发送 一个带有网络认证证书的HTTP请求并返回相应的HTTP响应。
设计
创建一个WebRequest对象和一个NetWorkCredential对象。把NetWorkCredential对象作为WebRequest对象的Credentials的属性赋给它并且通过WebRequest.GetResponse()方法返回HTTP响应。
方案
public static void Credential() { string url = "http://server/path/webform.aspx"; WebRequest wreq = WebRequest.Create(url); //设置信息,创建对象 string userId="CalvinR"; string password="123"; string domain = "DomainName"; NetworkCredential nc = new NetworkCredential(userId,password,domain); wreq.Credentials = nc; Console.WriteLine("Sending authenticated request to"+url); //读取、响应 WebResponse wres = wreq.GetResponse(); Stream st = wres.GetResponseStream(); StreamReader sr = new StreamReader(st); string res = sr.ReadToEnd(); st.Close(); sr.Close(); Console.WriteLine("HTTP response is "); Console.WriteLine(res); }
注解
WebRequest对象不是利用New关键字通过构造函数来创建的,而是利用工厂机制(factory mechanism)通过create()方法来创建的。