C# HttpWebRequest 笔记
目录:
1,HttpWebRequest 实例化
2,GetResponse 获取请求结果
3,获取结果
4,获取流信息
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() 可以一次性从流中读取所有的字符。
C# HttpWebRequest 笔记的更多相关文章
- .net学习笔记----HttpRequest,WebRequest,HttpWebRequest区别
WebRequest是一个虚类/基类,HttpWebRequest是WebRequest的具体实现 HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所 ...
- 在使用 HttpWebRequest Post数据时候返回 400错误
笔者有一个项目中用到了上传zip并解压的功能.开始觉得很简单,因为之前曾经做过之类的上传文件的功能,所以并不为意,于是使用copy大法.正如你所料,如果一切很正常的能运行的话就不会有这篇笔记了. 整个 ...
- WPF,Silverlight与XAML读书笔记第四十八 - Silverlight网络与通讯
说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 这一部分我们重点讨论下Silverlight ...
- Rest API 开发 学习笔记(转)
Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...
- WPF笔记一
笔记内容: BUG.WPF运行窗体时调用Hide()方法,然后再Show()异常的解决方案 WPF 窗体设置为无边框 选择本地文件 选择文件夹 WPF实现右下角弹出消息窗口 WPF 显示 HTTP 网 ...
- Windows phone 8 学习笔记(5) 图块与通知(转)
基于metro风格的Windows phone 8 应用提到了图块的概念,它就是指启动菜单中的快速启动图标.一般一个应用必须有一个默认图块,还可以有若干个次要图块.另外,通知与图块的关系比较密切,我们 ...
- VB winform自动更新 笔记
看网上各种自动更新方法,最后自己找了个比较简单的,在此做个笔记. 服务器上的共享盘里存放生成的可执行文件和XML格式的配置: <?xml version="1.0" enco ...
- Windows phone 8 学习笔记(5) 图块与通知
原文:Windows phone 8 学习笔记(5) 图块与通知 基于metro风格的Windows phone 8 应用提到了图块的概念,它就是指启动菜单中的快速启动图标.一般一个应用必须有一个默认 ...
- Windows phone 8 学习笔记(3) 通信
原文:Windows phone 8 学习笔记(3) 通信 Windows phone 8 可利用的数据通信方式比较广泛,在硬件支持的前提下,我们可以利用WiFi.蓝牙.临近感应等多种方式.数据交互一 ...
随机推荐
- 【BATJ面试必会】Java 基础篇
一.数据类型 包装类型 缓存池 二.String 概览 不可变的好处 String, StringBuffer and StringBuilder String Pool new String(&qu ...
- Python装饰器之 property()
1. 何为装饰器? 官方定义:装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数 ...
- C#byte类型
byte类型的范围是0~255转换为二进制是00000000~11111111 ---------------------------------------------------------- C ...
- AE开发流程
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 【JavaScript 从零开始】表达式和运算符(1)
原始表达式 最简单的表达式是"原始表达式"(primary expression).JavaScript中的原始表达式包含常量或直接量.关键字和变量. // 常量或直接量 1.23 ...
- Spring系列之——spring security
1 搭建springboot 2 配置pom依赖(springboot版本为2.1.3) <dependency> <groupId>org.springframework.b ...
- fuz 2159 WuYou
Problem 2159 WuYou Accept: 16 Submit: 64Time Limit: 1000 mSec Memory Limit : 32768 KB Problem ...
- JAVA成员方法的调用分析
如下面例子: public class A { int x=10; public int getx() {return x;} } public class B extends A { int x=2 ...
- 最全Vue开发环境搭建
前言 一直想去学Vue,不过一直找不到一个契机.然公司手机端用到了跨平台开发apicloud,里边涉及到Vue组件化开发,例如header和footer的封装,以及apicloud自定义的frame等 ...
- Vue 2.0 pagination分页组件
最近写了一个分页组件,效果如下图: f-pagination.js文件 Vue.component('f-pagination',{ template:'<div class="fPa ...