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类用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 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,

  • 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

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

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

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

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

  • 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与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的用法详解

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

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

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

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

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

  • 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一起使用,一个发送请求,一个

随机推荐