asp 中有没有 httpwebrequest

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp 中有没有 httpwebrequest相关的知识,希望对你有一定的参考价值。

System.Web.HttpRequest是封装浏览器对服务器的请求的,主要用在ASP.NET中,其中包括浏览器请求的网址,查询字符串数据或表单数据等等

而System.Net.HttpWebRequest则是用来简化网络请求的过程,从服务器上获取文件/结果的,譬如你可以在代码中用这个类冒充浏览器(设置一个UserAgent)来发请求,处理回应

第一:他们不是父子关系。
第二:Syste.Net.HttpWebRequest 类是System.Net.WebRequest抽象类的一个子类,它是 .NET Framework 的用于访问 Internet 数据的请求/响应模型的抽象基类。使用该请求/响应模型的应用程序可以用协议不可知的方式从 Internet 请求数据。在这种方式下,应用程序处理 WebRequest 类的实例,而协议特定的子类则执行请求的具体细节。
System.Net.HttpWebRequest 类和System.Net.FileWebRequest都继承了WebRequest
1、FileWebRequest 类为使用 file:// 方案来请求本地文件的 URI 实现 WebRequest 抽象基类。
2、HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持,也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。
第三:System.Web.HttpRequest 类使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值。HttpRequest 类的方法和属性通过 HttpApplication、HttpContext、Page 和 UserControl 类的 Request 属性公开。

所以使用System.Web.HttpRequest类的时候其实都是利用HttpApplication、HttpContext、Page 和 UserControl 类的 Request 属性。而使用System.Net.HttpWebRequest类时是为了获得一个Uri资源。自己创建。

System.Web 命名空间提供使得可以进行浏览器与服务器通信的类和接口。此命名空间包括 HttpRequest 类(用于提供有关当前 HTTP 请求的广泛信息)、HttpResponse 类(用于管理对客户端的 HTTP 输出)以及 HttpServerUtility 类(用于提供对服务器端实用工具与进程的访问)。System.Web 还包括用于 Cookie 操作、文件传输、异常信息和输出缓存控制的类。
System.Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口。WebRequest 和 WebResponse 类形成了所谓的可插接式协议的基础,可插接式协议是网络服务的一种实现,它使您能够开发出使用 Internet 资源的应用程序,而不必考虑各种不同协议的具体细节。
参考技术A HttpWebRequest获取网页源代码时自动识别网页编码,通过读取页面中的charset和读取http头中的编码信息获取页面的编码,基本可以正确获取网页编码
static string GetEncoding(string url)

HttpWebRequest request = null;

HttpWebResponse response = null;
StreamReader reader = null;
try


request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout
= 20000;
request.AllowAutoRedirect = false;

response =
(HttpWebResponse)request.GetResponse();
if (response.StatusCode ==
HttpStatusCode.OK && response.ContentLength < 1024 * 1024)


if (response.ContentEncoding != null &&
response.ContentEncoding.Equals("gzip",
StringComparison.InvariantCultureIgnoreCase))
reader = new StreamReader(new
GZipStream(response.GetResponseStream(), CompressionMode.Decompress));
else

reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII);

string html = reader.ReadToEnd();

Regex reg_charset = new
Regex(@"charset\b\s*=\s*(?<charset>[^""]*)");
if
(reg_charset.IsMatch(html))

return
reg_charset.Match(html).Groups["charset"].Value;

else if
(response.CharacterSet != string.Empty)

return response.CharacterSet;


else
return Encoding.Default.BodyName;


catch



finally


if (response != null)


response.Close();
response = null;

if (reader != null)

reader.Close();

if (request != null)
request = null;



return Encoding.Default.BodyName;


/// <summary>

/// 获取源代码 http://www.jibuweb.com
/// </summary>
/// <param
name="url"></param>
/// <returns></returns>
static
string GetHtml(string url, Encoding encoding)

HttpWebRequest request =
null;
HttpWebResponse response = null;
StreamReader reader = null;

try

request = (HttpWebRequest)WebRequest.Create(url);

request.Timeout = 20000;
request.AllowAutoRedirect = false;

response = (HttpWebResponse)request.GetResponse();
if
(response.StatusCode == HttpStatusCode.OK && response.ContentLength <
1024 * 1024)

if (response.ContentEncoding != null &&
response.ContentEncoding.Equals("gzip",
StringComparison.InvariantCultureIgnoreCase))
reader = new StreamReader(new
GZipStream(response.GetResponseStream(), CompressionMode.Decompress), encoding);

else
reader = new StreamReader(response.GetResponseStream(), encoding);

string html = reader.ReadToEnd();

return html;


catch



finally


if (response != null)


response.Close();
response = null;

if (reader != null)

reader.Close();

if (request != null)
request = null;



return string.Empty;

用asp.net c# HttpWebRequest获取网页源代码

public string GetPage(string url)
{

HttpWebRequest request = null;

HttpWebResponse response = null;

StreamReader reader = null;

try
{

request = (HttpWebRequest)WebRequest.Create(url);

request.Timeout = 20000;

request.AllowAutoRedirect = false;

response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode == HttpStatusCode.OK && response.ContentLength < 1024 * 1024)
{

reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);

string html = reader.ReadToEnd();

return html;

}

}

catch
{

}

finally
{

if (response != null)
{

response.Close();

response = null;

}

if (reader != null)

reader.Close();

if (request != null)

request = null;

}

return string.Empty;
}

以上是关于asp 中有没有 httpwebrequest的主要内容,如果未能解决你的问题,请参考以下文章

asp 中有没有 httpwebrequest

asp.net中前端先调用的后台方法,然后在后台再调用前端方法没有作用

为啥 asp.net 5 剃须刀页面中没有开发人员异常页面?

在没有声明密码的情况下在 ASP.NET 中进行模拟

asp中Replace待替换字符串有没有长度限制?

Asp.Net core api 中没有释放内存