C#中的HttpWebRequest类用法详解

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,HttpWebRequest 实例化

以下是实例化方法,使用 visual studio 编写代码时,会提示 可以简化代码,原因下面说

string url = "http://baidu.com"; HttpWebRequest httpWeb = (HttpWebRequest)HttpWebRequest.Create(url);

HttpWebRequest 对应的是 URL,所以其连接字符串必须是 有效的 HTTP 字符串,网址前面必须加上 Http 协议类型。

可以是

http:// 

https:// 

 可以加端口

http://baidu.com:666

也可以是IP,但也要加上 http 头和端口。

HttpWebRequest 对象实例化,一般不直接new。而是使用.Create 方法返回一个 WebRequest 对象。

HttpWebRequest httpWeb = (HttpWebRequest)WebRequest.Create("https://www.whuanle.cn:443");

注意下面两个方法:

HttpWebRequest.Create

WebRequest.Create

Cretate 返回的都是 WebRequest 对象,因为 Create 是一个静态方法

public static WebRequest Create(string requestUriString); public static WebRequest Create(Uri requestUri); public static WebRequest CreateDefault(Uri requestUri);

所以,创建HttpWebRequest 实例时,这样创建:

HttpWebRequest httpWeb = (HttpWebRequest)WebRequest.Create("https://www.whuanle.cn:443");

HttpWebRequest 支持 GET 和 POST 两种方式进行请求,

设置方法

HttpWebRequest httpWeb = (HttpWebRequest)WebRequest.Create("https://www.whuanle.cn:443"); httpWeb.Method = "GET";

WebRequest 的请求类型。

http://

https://

ftp://

file://

2,GetResponse 获取请求结果

HttpWebRequest 对象 使用 .GetResponse() 方法, 获取返回结果,.GetResponse() 返回的是一个 WebResponse 对象。

WebResponse 对象的方法

Close()

当由子类重写时,将关闭响应流。

CreateObjRef(Type)

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

(Inherited from MarshalByRefObject)
Dispose()

释放 WebResponse 对象使用的非托管资源。

Dispose(Boolean)

释放由 WebResponse 对象使用的非托管资源,并可根据需要释放托管资源。

Equals(Object)

确定指定的对象是否等于当前对象。

(Inherited from Object)
GetHashCode()

作为默认哈希函数。

(Inherited from Object)
GetLifetimeService()

检索控制此实例的生存期策略的当前生存期服务对象。

(Inherited from MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext)     

使用序列化目标对象所需的数据填充 SerializationInfo。

GetResponseStream()

当在子类中重写时,从 Internet 资源返回数据流。

GetType()

获取当前实例的 Type。

(Inherited from Object)
InitializeLifetimeService()

获取生存期服务对象来控制此实例的生存期策略。

(Inherited from MarshalByRefObject)
MemberwiseClone()

创建当前 Object 的浅表副本。

(Inherited from Object)
MemberwiseClone(Boolean)

创建当前 MarshalByRefObject 对象的浅表副本。

(Inherited from MarshalByRefObject)
ToString()

返回表示当前对象的字符串。

(Inherited from Object)
3,获取结果

使用 WebSponse 对象的 GetResponseStream() 方法获取数据流

string Url = "https://www.whuanle.cn:443"; WebRequest wReq = WebRequest.Create(Url); WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream(); 4,获取流信息 string Url = "https://www.whuanle.cn:443"; WebRequest wReq = WebRequest.Create(Url); WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream(); using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.UTF8)) { string a = ""; while ((a = reader.ReadLine()) != null) { Console.WriteLine(a); } return reader.ReadToEnd(); }

上面是一个获取流的例子,以 UTF8 编码输出流,以行读取。

下面是另一个方法

string Url = "https://www.whuanle.cn:443"; WebRequest wReq = WebRequest.Create(Url); WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream(); using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.UTF8)) { string str = reader.ReadToEnd(); Console.WriteLine(str); }

使用 reader.ReadToEnd() 可以一次性从流中读取所有的字符。

推荐一位其他人的文章,里面列出了WebRequest、WebResponse 等对象所有的方法、属性等。

地址:https://www.jb51.net/article/234688.htm

到此这篇关于C#中的HttpWebRequest类用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易知道(ezd.cc)。

推荐阅读

    foreach的用法c语言和c#

    foreach的用法c语言和c#,数组,遍历,本文目录foreach的用法c语言和c#详细讲解foreach循环的用法C#中的foreach 怎么用啊foreach用法C#中的f

    lol观战数据请求失败解决方法

    lol观战数据请求失败解决方法,观战,数据,系统,请求,数据请求,好友,  玩英雄联盟有一项观战功能,当我们邀请好友在进行游戏的时候,我们可以点击

    params 是什么意思,c#里

    params 是什么意思,c#里,参数,数组,本文目录params 是什么意思,c#里params.add跟params.put有区别吗C#中ref,out和params有什么区别发送请

    C# 基于StackExchange.Redis.dll利用Redis实现分布式Session

    C# 基于StackExchange.Redis.dll利用Redis实现分布式Session,令牌,客户端,最近在研发一款O2O产品,考虑到分布式架构的需要,以前那一套.NET的

    javascript实现继承的方式有哪些

    javascript实现继承的方式有哪些,父类,继承,子类,属性,原型,方法,javascript实现继承的方式:1、原型链继承;将父类的实例作为子类的原型。2、构造

    ping请求超时怎么办

    ping请求超时怎么办,防火墙,命令,请求超时,点击,输入,筛选,ping请求超时的解决办法:首先进入dos命令,并打开防火墙和打开控制面板;然后点击windows

    c#中 (ToolStrip

    c#中 (ToolStrip,窗体,控件,本文目录c#中 (ToolStrip)控件是做什么用的winform窗体问题 toolstrip怎么重用,每个窗体都要用到同样的工具栏窗体