WebRequest与WebResponse抽象类,DNS静态类、Ping类
一、概述
1、WebRequest:
对统一资源标识符 (URI) 发出请求。 这是一个 abstract 类。
WebRequest的派生类:PackWebRequest、FileWebRequest、FtpWebRequest、HttpWebRequest
重要:我们不建议你使用WebRequest或其派生的类的新的开发。 Net4.5以上请改用System.Net.Http.HttpClient类。
2、WebResponse
提供来自统一资源标识符 (URI) 的响应。 这是一个 abstract 类。
WebResponse派生类:PackWebResponse、FileWebResponse、FtpWebResponse、HttpWebResponse
客户端应用程序不会创建WebResponse对象直接; 通过调用WebRequest实例的GetResponse方法来创建。
二、下载
1、同步模式
WebRequest request = WebRequest.Create("http://www.baidu.com");//可以将request强制转换为HttpWebRequest,以设置和获取特定的属性
request.Credentials = CredentialCache.DefaultCredentials;//也可以设置代理request.Proxy..
request.Timeout = ;
WebResponse response =
request.GetResponse
();//获取响应.有异步方法:Begin/EndGetResponse
Stream stream =
response.GetResponseStream();//
获取响应流,读取响应流,进行下载
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))//也可以stream.Read(buffer)
{
Console.WriteLine(reader.ReadToEnd());
}
2、异步模式
WebRequest request = WebRequest.Create("http://www.baidu.com");//可以将request强制转换为HttpWebRequest,以设置和获取特定的属性
request.BeginGetResponse
(ar =>
{
WebRequest request_1 = (WebRequest)ar.AsyncState;
WebResponse response = request_1.EndGetResponse(ar);
Stream stream = response.GetResponseStream();//获取响应流
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))//也可以stream.Read(buffer)
{
Console.WriteLine(reader.ReadToEnd());
}
}, request);
3、Net4.5以上,Task异步。
void Main()
{
GetResponseAsync();
} public async void GetResponseAsync()
{
WebRequest request = WebRequest.Create("http://www.baidu.com");//可以将request强制转换为HttpWebRequest,以设置和获取特定的属性
WebResponse response = await
request.GetResponseAsync()
as WebResponse;
Stream stream = response.GetResponseStream();//获取响应流
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))//也可以stream.Read(buffer)
{
Console.WriteLine(reader.ReadToEnd());
}
}
三、上传:
1、HTTP上传:
Encoding encoding = Encoding.Default;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com");
request.Method = "post";
request.Accept = "text/html, application/xhtml+xml, */*";
request.ContentType = "application/x-www-form-urlencoded";
byte[] buffer = encoding.GetBytes("aaa");
request.ContentLength = buffer.Length;
Stream stream =
request.GetRequestStream();//获取请求流,进行写入流
,进行上传或者异步:Begin/EndGetRequestStream
stream.Write(buffer,
, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
Console.WriteLine(reader.ReadToEnd());
}
2、FTP上传文件代码实现:(对于FTP,微软建议使用第三方工具)
string ftphost = "127.0.0.1";
//here correct hostname or IP of the ftp server to be given string ftpfullpath = "ftp://" + ftphost + "/testfolder/testfile.xml";
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
ftp.Credentials = new NetworkCredential("userid", "password");
//userid and password for the ftp server to given ftp.KeepAlive = true;
ftp.UseBinary = true;
ftp.Method
=
WebRequestMethods.Ftp.UploadFile;
FileStream fs = File.OpenRead(@"c:\testfile.xml");
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, , buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, , buffer.Length);
ftpstream.Close();
FtpWebRequest与FtpWebResponse完成FTP操作
FTP工具FileZilla、WinSCP、FTP类库FluentFTP
四、DNS静态类
Dns类是一个静态类,从 Internet 域名系统 (DNS) 中检索有关特定主机的信息。
DNS 查询中的主机信息返回的实例中IPHostEntry类。 如果指定的主机在 DNS 数据库中,有多个条目IPHostEntry包含多个 IP 地址和别名。
1、Dns类方法
- GetHostName() 获取本地计算机的主机名。
- GetHostAddresses(String) 返回指定主机的 Internet 协议 (IP) 地址。返回IPAddress[]数组
- GetHostEntry(String) 将主机名或 IP 地址解析为 IPHostEntry 实例。
- GetHostByAddress(String) 根据 IP 地址创建 IPHostEntry 实例。
- GetHostEntry(IPAddress) 将 IP 地址解析为 IPHostEntry 实例。
- GetHostByAddress(IPAddress) 根据指定的 IPAddress 创建 IPHostEntry 实例。
- Resolve(String) 将 DNS 主机名或 IP 地址解析为 IPHostEntry 实例。
2、IPHostEntry属性
- AddressList 获取或设置与主机关联的 IP 地址列表。返回IPAddress[]数组
- Aliases 获取或设置与主机关联的别名列表。
- HostName 获取或设置主机的 DNS 名称。
五、Ping类
Ping类位于System.Net.NetworkInformation下。
bool online = false; //是否在线
try
{ Ping ping = new Ping();
PingReply pingReply = ping.Send("192.168.132.191");//主机名或者IP地址
if (pingReply.Status == IPStatus.Success)
{
online = true;
Console.WriteLine("当前在线,已ping通!");
}
else
{
Console.WriteLine("不在线,ping不通!");
}
}
catch
{
Console.WriteLine("不在线,ping不通!");
}
WebRequest与WebResponse抽象类,DNS静态类、Ping类的更多相关文章
- 定义类、System.Object对象、构造函数与析构函数、抽象类与静态类
一.类定义 class MyClass { //类成员 } 1.访问级别 默认访问级别为internal(内部类),也可以是public(公共类) internal(内部类):当前项目中的代码才能访问 ...
- 【C# 基础概念】抽象类、密封类及类成员
使用 abstract 关键字可以创建不完整且必须在派生类中实现的类和 class 成员. 使用 sealed 关键字可以防止继承以前标记为 virtual 的类或某些类成员. abstract修饰符 ...
- 【转】C++ 虚函数&纯虚函数&抽象类&接口&虚基类
1. 动态多态 在面向对象语言中,接口的多种不同实现方式即为多态.多态是指,用父类的指针指向子类的实例(对象),然后通过父类的指针调用实际子类的成员函数. 多态性就是允许将子类类型的指针赋值给父类类型 ...
- C++ 虚函数&纯虚函数&抽象类&接口&虚基类(转)
http://www.cnblogs.com/fly1988happy/archive/2012/09/25/2701237.html 1. 多态 在面向对象语言中,接口的多种不同实现方式即为多态.多 ...
- (39)C#Ping类
一.Ping类 引用命名空间 using System.Net.NetworkInformation 控制台版 using System; using System.Collections.Gener ...
- vs中找到接口和抽象类的具体实现类
如何找到接口和抽象类的具体实现类 1,可以使用:ctrl+k clrl+t打开调用层次结构窗口: 2,移动到实现节点: 3,然后可以转到具体实现: 第二种安装插件 ReSharper 第三种方法: 在 ...
- Java入门教程十(抽象类接口内部类匿名类)
抽象类(abstract) 一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类. 在面向对象领域,抽象类 ...
- PowerShell_零基础自学课程_9_高级主题:静态类和类的操作
上次我们说到了,wmi对象和com组件,今天我们继续来看PS中对象的相关内容.主要说一下静态对象和对象的基本操作. 一.静态对象 在PS中有一类特殊的对象,我们不能同过这些类创建新的对象,这些类是不能 ...
- C++多态、虚函数、纯虚函数、抽象类、虚基类
一.C++多态 C++的多态包括静态多态和动态多态.静态多态包括函数重载和泛型编程,动态多态包括虚函数.静态多态是指在编译期间就可以确定,动态多态是指在程序运行时才能确定. 二.虚函数 1.虚函数为类 ...
随机推荐
- alertmanager的web页面显示UTC时间的问题
1.http://192.168.1.144:9093/#/alerts 显示的告警时间是UTC时间 2.脚本的变量 {"status":"success"}[ ...
- php控制访问人数的方法
php控制访问人数的方法 <pre>//添加访问人数 public function addfangwen() { header("Content-type:text/html; ...
- Erlang:[笔记三,构建工具rebar之使用依赖]
概述 类似Java中的Maven,Gradle,在Erlang中同样也有包管理的工具,Rebar提供Erlang依赖(包)管理机制,开发人员可以重复使用已有的模块,通过rebar引入自己的项目直接使用 ...
- kettle工具的介绍和使用
kettle详解(数据抽取.转换.装载) 原文地址链接:https://blog.csdn.net/qq_35731570/article/details/71123413 一:下载路径 当你要学 ...
- 怎样在网页中嵌入JS代码
有四种方法: 方法1: 在<script>标签内直接写代码 <body> <button id="btn">click</button&g ...
- [Vue]vue中路由重定向redirect
1.重定向的地址不需要接收参数 const routes = [ { path: '/', redirect: '/index'}, { path: '/index', component: inde ...
- (二十一)JSP基础
定义 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写html,但它相 ...
- (八)装配Bean(2)
二.在Java类中进行显式的装配 显式配置有两种: 1. 一种是在java(本文讲解) 2. 另一种是xml配置文件(第一章有讲) 案例一: 使用java显式装配+@autowired自动装配的方 ...
- (十一)SpringBoot之文件上传以及
一.案例 1.1 配置application.properties #主配置文件,配置了这个会优先读取里面的属性覆盖主配置文件的属性 spring.profiles.active=dev server ...
- tf 2.0
tf.function和Autograph使用指南-Part 1 "Keras之父发声:TF 2.0 + Keras 深度学习必知的12件事" Effective TensorFl ...