C#中的HttpWebRequest类介绍

提供 WebRequest 类的 HTTP 特定的实现。

继承层次结构 System.Object → System.MarshalByRefObject →  System.Net.WebRequest →  System.Net.HttpWebRequest

命名空间:System.Net ; 程序集:System(在 System.dll 中)

C#语法:

[SerializableAttribute]

public class HttpWebRequest : WebRequest, ISerializable

HttpWebRequest 类型公开以下成员。

1、构造函数

名称 说明
HttpWebRequest() 已过时。初始化 HttpWebRequest 类的新实例。
HttpWebRequest(SerializationInfo, StreamingContext) 已过时。从 SerializationInfo和 StreamingContext 类的指定实例初始化 HttpWebRequest 类的新实例。

2、属性

名称 说明
Accept 获取或设置 Accept HTTP 标头的值。
Address 获取实际响应请求的 Internet 资源的统一资源标识符 (URI)。
AllowAutoRedirect 获取或设置一个值,该值指示请求是否应跟随重定向响应。
AllowReadStreamBuffering 获取或设置一个值,该值指示是否对从 Internet 资源接收的数据进行缓冲处理。
AllowWriteStreamBuffering 获取或设置一个值,该值指示是否对发送到 Internet 资源的数据进行缓冲处理。
AuthenticationLevel 获取或设置用于此请求的身份验证和模拟的级别。 (继承自 WebRequest。)
AutomaticDecompression 获取或设置所使用的解压缩类型。
CachePolicy 获取或设置此请求的缓存策略。 (继承自 WebRequest。)
ClientCertificates 获取或设置与此请求关联的安全证书集合。
Connection 获取或设置 Connection HTTP 标头的值。
ConnectionGroupName 获取或设置请求的连接组的名称。 (重写 WebRequest.ConnectionGroupName。)
ContentLength 获取或设置 Content-lengthHTTP 标头。 (重写 WebRequest.ContentLength。)
ContentType 获取或设置 Content-type HTTP 标头的值。 (重写 WebRequest.ContentType。)
ContinueDelegate 获取或设置当从 Internet 资源接收到 HTTP 100 持续响应时调用的委托方法。
ContinueTimeout 获取或设置在接收到来自服务器的 100 次连续响应之前要等待的超时(以毫秒为单位)。
CookieContainer 获取或设置与此请求关联的 cookie。
CreatorInstance 已过时。当在子类中重写时,获取从 IWebRequestCreate 类派生的工厂对象,该类用于创建为生成对指定 URI 的请求而实例化的 WebRequest。 (继承自 WebRequest。)
Credentials 获取或设置请求的身份验证信息。 (重写 WebRequest.Credentials。)
Date 获取或设置要在 HTTP 请求中使用的 Date HTTP 标头值。
DefaultCachePolicy 获取或设置此请求的默认缓存策略。
DefaultMaximumErrorResponseLength 获取或设置 HTTP 错误响应的默认最大长度。
DefaultMaximumResponseHeadersLength 获取或设置 MaximumResponseHeadersLength 属性的默认值。
Expect 获取或设置 Expect HTTP 标头的值。
HaveResponse 获取一个值,该值指示是否收到了来自 Internet 资源的响应。
Headers 指定构成 HTTP 标头的名称/值对的集合。 (重写 WebRequest.Headers。)
Host 获取或设置要在 HTTP 请求中独立于请求 URI 使用的 Host 标头值。
IfModifiedSince 获取或设置 If-Modified-Since HTTP 标头的值。
ImpersonationLevel 获取或设置当前请求的模拟级别。 (继承自 WebRequest。)
KeepAlive 获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接。
MaximumAutomaticRedirections 获取或设置请求将跟随的重定向的最大数目。
MaximumResponseHeadersLength 获取或设置响应标题允许的最大长度。
MediaType 获取或设置请求的媒体类型。
Method 获取或设置请求的方法。 (重写 WebRequest.Method。)
Pipelined 获取或设置一个值,该值指示是否通过管线将请求传输到 Internet 资源。
PreAuthenticate 获取或设置一个值,该值指示是否随请求发送一个身份验证标头。 (重写 WebRequest.PreAuthenticate。)
ProtocolVersion 获取或设置用于请求的 HTTP 版本。
Proxy 获取或设置请求的代理信息。 (重写 WebRequest.Proxy。)
ReadWriteTimeout 获取或设置写入或读取流时的超时(以毫秒为单位)。
Referer 获取或设置 Referer HTTP 标头的值。
RequestUri 获取请求的原始统一资源标识符 (URI)。 (重写 WebRequest.RequestUri。)
SendChunked 获取或设置一个值,该值指示是否将数据分段发送到 Internet 资源。
ServerCertificateValidationCallback 获取或设置用于验证服务器证书的回调函数。
ServicePoint 获取用于请求的服务点。
SupportsCookieContainer 获取一个值,该值指示请求是否为 CookieContainer 提供支持。
Timeout 获取或设置 GetResponse 和 GetRequestStream 方法的超时值(以毫秒为单位)。 (重写 WebRequest.Timeout。)
TransferEncoding 获取或设置 Transfer-encoding HTTP 标头的值。
UnsafeAuthenticatedConnectionSharing 获取或设置一个值,该值指示是否允许经过高速 NTLM 身份验证的连接共享。
UseDefaultCredentials 获取或设置一个 Boolean 值,该值控制默认凭据是否随请求一起发送。 (重写 WebRequest.UseDefaultCredentials。)
UserAgent 获取或设置 User-agent HTTP 标头的值。

3、方法

名称 说明
Abort 取消对 Internet 资源的请求。 (重写 WebRequest.Abort()。)
AddRange(Int32) 向请求添加从请求数据的开始处或结束处的特定范围的字节范围标头。
AddRange(Int64) 向请求添加从请求数据的开始处或结束处的特定范围的字节范围标头。
AddRange(Int32, Int32) 向请求添加指定范围的字节范围标头。
AddRange(Int64, Int64) 向请求添加指定范围的字节范围标头。
AddRange(String, Int32) 向请求添加从请求数据的开始处或结束处计算的特定范围的 Range 标头。
AddRange(String, Int64) 向请求添加从请求数据的开始处或结束处计算的特定范围的 Range 标头。
AddRange(String, Int32, Int32) 向请求添加指定范围的范围标头。
AddRange(String, Int64, Int64) 向请求添加指定范围的范围标头。
BeginGetRequestStream 开始对用来写入数据的 Stream 对象的异步请求。 (重写 WebRequest.BeginGetRequestStream(AsyncCallback, Object)。)
BeginGetResponse 开始对 Internet 资源的异步请求。 (重写 WebRequest.BeginGetResponse(AsyncCallback, Object)。)
CreateObjRef 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
EndGetRequestStream(IAsyncResult) 结束对用于写入数据的 Stream 对象的异步请求。 (重写 WebRequest.EndGetRequestStream(IAsyncResult)。)
EndGetRequestStream(IAsyncResult,TransportContext) 结束对用于写入数据的 Stream 对象的异步请求,并输出与该流关联的 TransportContext。
EndGetResponse 结束对 Internet 资源的异步请求。 (重写 WebRequest.EndGetResponse(IAsyncResult)。)
Equals(Object) 确定指定的对象是否等于当前对象。 (继承自 Object。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetHashCode 作为默认哈希函数。 (继承自 Object。)
GetLifetimeService 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
GetObjectData 基础结构。使用序列化目标对象所需的数据填充 SerializationInfo。 (重写 WebRequest.GetObjectData(SerializationInfo, StreamingContext)。)
GetRequestStream() 获取用于写入请求数据的 Stream 对象。 (重写 WebRequest.GetRequestStream()。)
GetRequestStream(TransportContext) 获取用于写入请求数据的 Stream 对象,并输出与该流关联的 TransportContext。
GetRequestStreamAsync 当在子类中被重写时,将用于写入数据的 Stream 作为异步操作返回到 Internet 资源。 (继承自 WebRequest。)
GetResponse 返回来自 Internet 资源的响应。 (重写 WebRequest.GetResponse()。)
GetResponseAsync 当在子类中被重写时,将作为异步操作返回对 Internet 请求的响应。 (继承自 WebRequest。)
GetType 获取当前实例的 Type。 (继承自 Object。)
InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)
MemberwiseClone() 创建当前 Object 的浅表副本。 (继承自 Object。)
MemberwiseClone(Boolean) 创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject。)
ToString 返回表示当前对象的字符串。 (继承自 Object。)

4、显示接口实现

名称 说明
ISerializable.GetObjectData 基础结构。使用将目标对象序列化所需的数据填充 SerializationInfo。

5、备注

HttpWebRequest类对WebRequest中定义的属性和方法提供支持,也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。

不要使用HttpWebRequest 构造函数。使用 WebRequest.Create方法初始化新的 HttpWebRequest 对象。如果统一资源标识符 (URI) 的方案是 http:// 或 https://,则 Create 返回 HttpWebRequest 对象。

GetResponse方法向RequestUri属性中指定的资源发出同步请求并返回包含该响应的HttpWebResponse。可以使用 BeginGetResponse 和 EndGetResponse 方法对资源发出异步请求。

当要向资源发送数据时,GetRequestStream 方法返回用于发送数据的 Stream 对象。BeginGetRequestStream和EndGetRequestStream方法提供对发送数据流的异步访问。

对于使用 HttpWebRequest 的客户端验证身份,客户端证书必须安装在当前用户的“我的证书”存储区中。

如果在访问资源时发生错误,则 HttpWebRequest 类将引发 WebException。WebException.Status 属性包含指示错误源的 WebExceptionStatus 值。  当 WebException.Status 为 WebExceptionStatus.ProtocolError 时,Response 属性包含从资源接收的 HttpWebResponse。

HttpWebRequest将发送到 Internet 资源的公共 HTTP 标头值公开为属性,由方法或系统设置;下表包含完整列表。可以将 Headers 属性中的其他标头设置为名称/值对。注意,服务器和缓存在请求期间可能会更改或添加标头。

下表列出了由属性或方法设置或由系统设置的 HTTP 标头。


Header


设置方


Accept


由 Accept 属性设置。


Connection


由 Connection 属性和 KeepAlive 属性设置。


Content-Length


由 ContentLength 属性设置。


Content-Type


由 ContentType 属性设置。


Expect


由 Expect 属性设置。


日期


由系统设置为当前日期。


主机


由系统设置为当前主机信息。


If-Modified-Since


由 IfModifiedSince 属性设置。


范围


由 AddRange 方法设置。


Referer


由 Referer 属性设置。


Transfer-Encoding


由 TransferEncoding 属性设置(SendChunked 属性必须为 true)。


User-Agent


由 UserAgent 属性设置。

说明

HttpWebRequest   自动注册。  使用以 http:// 或 https:// 开头的 URI 之前,不需要调用 RegisterPrefix 方法来注册 System.Net.HttpWebRequest。

本地计算机或应用程序配置文件可能指定使用默认代理。  如果指定了 Proxy 属性,则 Proxy 属性中的代理设置会重写本地计算机或应用程序配置文件,并且 HttpWebRequest 实例将实用指定的代理设置。  如果配置文件中未指定代理并且未指定 Proxy 属性,则 HttpWebRequest 类使用从本地计算机上的 Internet Explorer 中继承的代理设置。  如果 Internet Explorer 中没有代理设置,请求会直接发送到服务器。

HttpWebRequest   类分析从 Internet Explorer 继承的且包含通配符的代理忽略列表时会与 Internet Explorer 直接分析忽略列表不同。  例如,HttpWebRequest 类将来自 Internet Explorer 的其中包含“nt*”的忽略列表分析为正则表达式“nt.$”。  此行为不同于 Internet Explorer 的本机行为。  因此 URL“http://intxxxxx”将忽略使用 HttpWebRequest 类的代理,但它不会忽略使用 Internet Explorer 的代理。

说明

Framework 在创建 SSL 会话时缓存这些会话,如果可能,还尝试对新请求重用缓存的会话。  尝试重用 SSL 会话时,该框架将使用 ClientCertificates 的第一个元素(如果有);如果 ClientCertificates 为空,则将尝试重用匿名会话。

说明

为安全起见,默认情况下禁用 Cookie。  如果您希望使用 Cookie,请使用 CookieContainer 属性启用 Cookie。

示例

下面的代码示例为 URI http://www.contoso.com/. 创建 HttpWebRequest。

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://www.contoso.com/"); 

到此这篇关于C#中的HttpWebRequest类介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2022-01-13

浅谈C#中HttpWebRequest与HttpWebResponse的使用方法

这个类是专门为HTTP的GET和POST请求写的,解决了编码,证书,自动带Cookie等问题. C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取 1.第一招,根据URL地址获取网页信息 先来看一下代码 get方法 public static string GetUrltoHtml(string Url,string type) { try { System.Net.WebRequest wReq = System.Net.Web

C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法

本文实例讲述了C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法,在项目开发中有一定的实用价值,具体方法如下: 一.前言: 这篇文章翻译来自madmik3 写在 CodeProject 上的文章,原标题为: C#'s WebClient.UploadFile with more functionality. 二.正文: 我们使用 WebRequest 来获取网页内容是非常简单的,可是用他来上传文件就没有那么简单了. 如果我们在网页中上传文件,加入下面代码即可: HTML 文

C#使用HttpWebRequest重定向方法详解

C# 如何使用 HttpWebRequest 重定向 1. HttpWebRequest是c#中的网络交互组件 存在与system.net 命名空间中 打开vs2017 新建一个项目 文件-新建-项目 创建一个控制台应用程序 使用HttpWebRequest,使用之前要先创建 HttpWebRequest myReq =(HttpWebRequest)WebRequest.Create(""); 发现并不识别HttpWebRequest 需要引用system.net命名空间 接下来我们

C#中的HttpWebRequest类用法详解

HttpWebRequest 是一个Http 请求类,继承于 WebRequest. WebRequest 是一个抽象类,能够对统一资源标识符 (URI) 发出请求. WebRequest 有以下派生类: System.IO.Packaging.PackWebRequest System.Net.FileWebRequest System.Net.FtpWebRequest System.Net.HttpWebRequest 使用时 using System.Net; 1,HttpWebRequ

C#使用HttpWebRequest与HttpWebResponse模拟用户登录

模拟艺龙旅游网登录,供大家参考,具体内容如下 想模拟登录,首先整理一下流程 1.通过360浏览器(IE,火狐等等)F12开发人员工具抓到相关数据 2.获取验证码(拿到cookie),登录时也需要使用 3.登录 F12调出开发人员工具,输入用户名,密码登录,看我们抓到了什么信息. Request URL:这个就是登录请求的url  https://secure.elong.com/passport/ajax/elongLogin 方式POST Form Data:这个是我们要POST传输的数据:

C#基于HttpWebRequest实现发送HTTP请求的方法分析

本文实例讲述了C#基于HttpWebRequest实现发送HTTP请求的方法.分享给大家供大家参考,具体如下: 调用第三方API的时候要用到HttpWebRequest类发送HTTP请求,网上查阅一番后大致了解了该类的用法,现记录如下. 首先引入HttpWebRequest类,System.IO类 using HttpWebRequest using System.IO GET请求 /// <summary> /// 发送GET请求 /// </summary> /// <p

C#中HttpWebRequest、WebClient、HttpClient的使用详解

HttpWebRequest: 命名空间: System.Net,这是.NET创建者最初开发用于使用HTTP请求的标准类.使用HttpWebRequest可以让开发者控制请求/响应流程的各个方面,如 timeouts, cookies, headers, protocols.另一个好处是HttpWebRequest类不会阻塞UI线程.例如,当您从响应很慢的API服务器下载大文件时,您的应用程序的UI不会停止响应.HttpWebRequest通常和WebResponse一起使用,一个发送请求,一个

C#中HttpWebRequest的用法详解

本文实例讲述了C#中HttpWebRequest的用法.分享给大家供大家参考.具体如下: HttpWebRequest类主要利用HTTP 协议和服务器交互,通常是通过 GET 和 POST 两种方式来对数据进行获取和提交.下面对这两种方式进行一下说明: GET 方式: GET 方式通过在网络地址附加参数来完成数据的提交,比如在地址 http://www.jb51.net/?hl=zh-CN 中,前面部分 http://www.jb51.net表示数据提交的网址,后面部分 hl=zh-CN 表示附

C#通过HttpWebRequest发送带有JSON Body的POST请求实现

目录 起因 原来的处理方式 新的方式 起因 很多博客都有描述到这个问题,那么为什么我还要写一篇文章来说一下呢,因为其他的都似乎已经过时了,会导致其实body 并没有发送过去.至于为什么不使用其他的诸如 HttpClient 之类的,是由于业务需要. 原来的处理方式 通过 GetRequestStream 来获取请求流,后把需要发送的 Json 数据写入到流中 private T PostDataViaHttpWebRequest<T>(string baseUrl, IReadOnlyDict

C# httpwebrequest访问HTTPS错误处理方法

C# httpwebrequest访问HTTPS链接时遇到这个错误,但是如果我开抓包工具,比如filddler2,则POST返回正常 错误提示的Message为: 基础连接已经关闭: 发送时发生错误. InnerException为: 从传输流收到意外的 EOF 或 0 个字节. 试了网上的N种方法,以下是本次的解决方案: ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 把网上找到的解决方案列一下,没准就能解决了

c# HttpWebRequest通过代理服务器抓取网页内容应用介绍

内网用户或代理上网的用户使用 复制代码 代码如下: using System.IO; using System.Net; public string get_html() { string urlStr = "http://www.domain.com"; //設定要獲取的地址 HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(urlStr); //建立HttpWebRequest對象 hwr.Timeout = 60

ASP.NET抓取网页内容的实现方法

本文实例讲述了ASP.NET抓取网页内容的实现方法.分享给大家供大家参考.具体实现方法如下: 一.ASP.NET 使用HttpWebRequest抓取网页内容 复制代码 代码如下: /// <summary>方法一:比较推荐  /// 用HttpWebRequest取得网页源码  /// 对于带BOM的网页很有效,不管是什么编码都能正确识别  /// </summary>  /// <param name="url">网页地址" </

C# 抓取网页内容的方法

1.抓取一般内容 需要三个类:WebRequest.WebResponse.StreamReader 所需命名空间:System.Net.System.IO 核心代码: view plaincopy to clipboardprint? 复制代码 代码如下: WebRequest request = WebRequest.Create("http://www.jb51.net/");   WebResponse response = request.GetResponse();   S

零基础写python爬虫之使用urllib2组件抓取网页内容

版本号:Python2.7.5,Python3改动较大,各位另寻教程. 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.  类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源. 在Python中,我们使用urllib2这个组件来抓取网页. urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件. 它以urlopen函数的形式提供了一个非常简单的接口. 最简

Asp 使用 Microsoft.XMLHTTP 抓取网页内容并过滤需要的

Asp 使用 Microsoft.XMLHTTP 抓取网页内容(没用乱码),并过滤需要的内容 示例源码: 复制代码 代码如下: <% Dim xmlUrl,http,strHTML,strBody xmlUrl = Request.QueryString("u") REM 异步读取XML源 Set http = server.CreateObject("Microsoft.XMLHTTP") http.Open "POST",xmlUrl,

php中抓取网页内容的实例详解

php中抓取网页内容的实例详解 方法一: 使用file_get_contents方法实现 $url = "http://news.sina.com.cn/c/nd/2016-10-23/doc-ifxwztru6951143.shtml"; $html = file_get_contents($url); //如果出现中文乱码使用下面代码 //$getcontent = iconv("gb2312", "utf-8",$html); echo &

Python实现周期性抓取网页内容的方法

本文实例讲述了Python实现周期性抓取网页内容的方法.分享给大家供大家参考,具体如下: 1.使用sched模块可以周期性地执行指定函数 2.在周期性执行指定函数中抓取指定网页,并解析出想要的网页内容,代码中是六维论坛的在线人数 论坛在线人数统计代码: #coding=utf-8 import time,sched,os,urllib2,re,string #初始化sched模块的scheduler类 #第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞. s = sche

python抓取网页内容并进行语音播报的方法

python2.7,下面是跑在window上的,稍作修改就可以跑在linux上. 实测win7和raspbian均可,且raspbian可以直接调用omxplayer命令进行播放. 利用百度的语音合成api进行语音播报,抓取的页面是北大未名BBS的十大. 先放抓取模块BDWM.py的代码: # -*- coding: utf-8 -*- import urllib2 import HTMLParser class MyParser(HTMLParser.HTMLParser): def __in

asp中利用xmlhttp抓取网页内容的代码

需要分件html源代码 此例中的被抓取的html源代码如下 <p align=left>2004年8月24日星期二:白天:晴有时多云南风3-4级:夜间:晴南风3-4级:气温:最高29℃最低19℃ </p> 而程序中是从 以2004年8月24日为关键字搜索,直到</p>结速 而抓取的内容就变成了"2004年8月24日星期二:白天:晴有时多云南风3-4级:夜间:晴南风3-4级:气温:最高29℃最低19℃ " 干干净净的了.记录一下. 复制代码 代码如下:

php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法

php的curl可以用来实现抓取网页,分析网页数据用, 简洁易用, 这里介绍其函数等就不详细描述, 放上代码看看: 只保留了其中几个主要的函数. 实现模拟登陆, 其中可能涉及到session捕获, 然后前后页面涉及参数提供形式. libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sock PHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)., libcurl当前支持http, https, ftp, gopher, telnet, dict, f