C#中判断一个网址是否可以打开
public static void GetPage(String url)
{
try
{
// Creates an HttpWebRequest for the specified URL.
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
// 有些网站会阻止程序访问,需要加入下面这句
myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
myHttpWebRequest.Method = "GET";
// Sends the HttpWebRequest and waits for a response.
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)
Console.WriteLine("\r\nResponse Status Code is OK and StatusDescription is: {0}", myHttpWebResponse.StatusDescription);
// Releases the resources of the response.
myHttpWebResponse.Close(); }
catch(WebException e)
{
Console.WriteLine("\r\nWebException Raised. The following error occured : {0}",e.Status);
}
catch(Exception e)
{
Console.WriteLine("\nThe following Exception was raised : {0}",e.Message);
}
}
HttpStatusCode 枚举的值,可以参考:
| 成员名称 | 说明 | |
|---|---|---|
![]() ![]() |
Accepted | 等效于 HTTP 状态 202。 Accepted 指示请求已被接受做进一步处理。 |
![]() ![]() |
Ambiguous | 等效于 HTTP 状态 300。 Ambiguous 指示请求的信息有多种表示形式。 默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 标头的内容。
如果 HttpWebRequest.AllowAutoRedirect 属性为 false,则 Ambiguous 将导致引发异常。 Ambiguous 是 MultipleChoices 的同义词。 |
![]() ![]() |
BadGateway | 等效于 HTTP 状态 502。 BadGateway 指示中间代理服务器从另一代理或原始服务器接收到错误响应。 |
![]() ![]() |
BadRequest | 等效于 HTTP 状态 400。 BadRequest 指示服务器未能识别请求。 如果没有其他适用的错误,或者不知道准确的错误或错误没有自己的错误代码,则发送 BadRequest。 |
![]() ![]() |
Conflict | 等效于 HTTP 状态 409。 Conflict 指示由于服务器上的冲突而未能执行请求。 |
![]() ![]() |
Continue | 等效于 HTTP 状态 100。 Continue 指示客户端可能继续其请求。 |
![]() ![]() |
Created | 等效于 HTTP 状态 201。 Created 指示请求导致在响应被发送前创建新资源。 |
![]() ![]() |
ExpectationFailed | 等效于 HTTP 状态 417。 ExpectationFailed 指示服务器未能符合 Expect 头中给定的预期值。 |
![]() ![]() |
Forbidden | 等效于 HTTP 状态 403。 Forbidden 指示服务器拒绝满足请求。 |
![]() ![]() |
Found | 等效于 HTTP 状态 302。 Found 指示请求的信息位于 Location 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求将使用 GET 方法。
如果 HttpWebRequest.AllowAutoRedirect 属性为 false,则 Found 将导致引发异常。 Found 是 Redirect 的同义词。 |
![]() ![]() |
GatewayTimeout | 等效于 HTTP 状态 504。 GatewayTimeout 指示中间代理服务器在等待来自另一个代理或原始服务器的响应时已超时。 |
![]() ![]() |
Gone | 等效于 HTTP 状态 410。 Gone 指示请求的资源不再可用。 |
![]() ![]() |
HttpVersionNotSupported | 等效于 HTTP 状态 505。 HttpVersionNotSupported 指示服务器不支持请求的 HTTP 版本。 |
![]() ![]() |
InternalServerError | 等效于 HTTP 状态 500。 InternalServerError 指示服务器上发生了一般错误。 |
![]() ![]() |
LengthRequired | 等效于 HTTP 状态 411。 LengthRequired 指示缺少必需的 Content-length 头。 |
![]() ![]() |
MethodNotAllowed | 等效于 HTTP 状态 405。 MethodNotAllowed 指示请求的资源上不允许请求方法(POST 或 GET)。 |
![]() ![]() |
Moved | 等效于 HTTP 状态 301。 Moved 指示请求的信息已移到 Location 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求将使用 GET 方法。
Moved 是 MovedPermanently 的同义词。 |
![]() ![]() |
MovedPermanently | 等效于 HTTP 状态 301。 MovedPermanently 指示请求的信息已移到 Location 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。
MovedPermanently 是 Moved 的同义词。 |
![]() ![]() |
MultipleChoices | 等效于 HTTP 状态 300。 MultipleChoices 指示请求的信息有多种表示形式。 默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 标头的内容。
如果 HttpWebRequest.AllowAutoRedirect 属性为 false,则 MultipleChoices 将导致引发异常。 MultipleChoices 是 Ambiguous 的同义词。 |
![]() ![]() |
NoContent | 等效于 HTTP 状态 204。 NoContent 指示已成功处理请求并且响应已被设定为无内容。 |
![]() ![]() |
NonAuthoritativeInformation | 等效于 HTTP 状态 203。 NonAuthoritativeInformation 指示返回的元信息来自缓存副本而不是原始服务器,因此可能不正确。 |
![]() ![]() |
NotAcceptable | 等效于 HTTP 状态 406。 NotAcceptable 指示客户端已用 Accept 头指示将不接受资源的任何可用表示形式。 |
![]() ![]() |
NotFound | 等效于 HTTP 状态 404。 NotFound 指示请求的资源不在服务器上。 |
![]() ![]() |
NotImplemented | 等效于 HTTP 状态 501。 NotImplemented 指示服务器不支持请求的函数。 |
![]() ![]() |
NotModified | 等效于 HTTP 状态 304。 NotModified 指示客户端的缓存副本是最新的。 未传输此资源的内容。 |
![]() ![]() |
OK | 等效于 HTTP 状态 200。 OK 指示请求成功,且请求的信息包含在响应中。 这是最常接收的状态代码。 |
![]() ![]() |
PartialContent | 等效于 HTTP 状态 206。 PartialContent 指示响应是包括字节范围的 GET 请求所请求的部分响应。 |
![]() ![]() |
PaymentRequired | 等效于 HTTP 状态 402。 保留 PaymentRequired 以供将来使用。 |
![]() ![]() |
PreconditionFailed | 等效于 HTTP 状态 412。 PreconditionFailed 指示为此请求设置的条件失败,且无法执行此请求。 条件是用条件请求标头(如 If-Match、If-None-Match 或 If-Unmodified-Since)设置的。 |
![]() ![]() |
ProxyAuthenticationRequired | 等效于 HTTP 状态 407。 ProxyAuthenticationRequired 指示请求的代理要求身份验证。 Proxy-authenticate 头包含如何执行身份验证的详细信息。 |
![]() ![]() |
Redirect | 等效于 HTTP 状态 302。 Redirect 指示请求的信息位于 Location 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求将使用 GET 方法。
如果 HttpWebRequest.AllowAutoRedirect 属性为 false,则 Redirect 将导致引发异常。 Redirect 是 Found 的同义词。 |
![]() ![]() |
RedirectKeepVerb | 等效于 HTTP 状态 307。 RedirectKeepVerb 指示请求信息位于 Location 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。
如果 HttpWebRequest.AllowAutoRedirect 属性为 false,则 RedirectKeepVerb 将导致引发异常。 RedirectKeepVerb 是 TemporaryRedirect 的同义词。 |
![]() ![]() |
RedirectMethod | 等效于 HTTP 状态 303。 作为 POST 的结果,RedirectMethod 将客户端自动重定向到 Location 头中指定的 URI。 用 GET 生成对 Location 标头所指定的资源的请求。
如果 HttpWebRequest.AllowAutoRedirect 属性为 false,则 RedirectMethod 将导致引发异常。 RedirectMethod 是 SeeOther 的同义词。 |
![]() ![]() |
RequestedRangeNotSatisfiable | 等效于 HTTP 状态 416。 RequestedRangeNotSatisfiable 指示无法返回从资源请求的数据范围,因为范围的开头在资源的开头之前,或因为范围的结尾在资源的结尾之后。 |
![]() ![]() |
RequestEntityTooLarge | 等效于 HTTP 状态 413。 RequestEntityTooLarge 指示请求太大,服务器无法处理。 |
![]() ![]() |
RequestTimeout | 等效于 HTTP 状态 408。 RequestTimeout 指示客户端没有在服务器期望请求的时间内发送请求。 |
![]() ![]() |
RequestUriTooLong | 等效于 HTTP 状态 414。 RequestUriTooLong 指示 URI 太长。 |
![]() ![]() |
ResetContent | 等效于 HTTP 状态 205。 ResetContent 指示客户端应重置(或重新加载)当前资源。 |
![]() ![]() |
SeeOther | 等效于 HTTP 状态 303。 作为 POST 的结果,SeeOther 将客户端自动重定向到 Location 头中指定的 URI。 用 GET 生成对 Location 标头所指定的资源的请求。
如果 HttpWebRequest.AllowAutoRedirect 属性为 false,则 SeeOther 将导致引发异常。 SeeOther 是 RedirectMethod 的同义词。 |
![]() ![]() |
ServiceUnavailable | 等效于 HTTP 状态 503。 ServiceUnavailable 指示服务器暂时不可用,通常是由于过多加载或维护。 |
![]() ![]() |
SwitchingProtocols | 等效于 HTTP 状态 101。 SwitchingProtocols 指示正在更改协议版本或协议。 |
![]() ![]() |
TemporaryRedirect | 等效于 HTTP 状态 307。 TemporaryRedirect 指示请求信息位于 Location 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。
如果 HttpWebRequest.AllowAutoRedirect 属性为 false,则 TemporaryRedirect 将导致引发异常。 TemporaryRedirect 是 RedirectKeepVerb 的同义词。 |
![]() ![]() |
Unauthorized | 等效于 HTTP 状态 401。 Unauthorized 指示请求的资源要求身份验证。 WWW-Authenticate 头包含如何执行身份验证的详细信息。 |
![]() ![]() |
UnsupportedMediaType | 等效于 HTTP 状态 415。 UnsupportedMediaType 指示请求是不支持的类型。 |
![]() ![]() |
Unused | 等效于 HTTP 状态 306。 Unused 是未完全指定的 HTTP/1.1 规范的建议扩展。 |
![]() |
UpgradeRequired | 等效于 HTTP 状态 426。 UpgradeRequired 指示客户端应切换为诸如 TLS/1.0 之类的其他协议。 |
![]() ![]() |
UseProxy | 等效于 HTTP 状态 305。 UseProxy 指示请求应使用位于 Location 头中指定的 URI 的代理服务器。 |
C#中判断一个网址是否可以打开的更多相关文章
- jquery ajax中支持哪些返回类型以及js中判断一个类型常用的方法?
1 jquery ajax中支持哪些返回类型在JQuery中,AJAX有三种实现方式:$.ajax() , $.post , $.get(). 预期服务器返回的数据类型.如果不指定,jQuery 将自 ...
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断 ...
- Mysql中判断一个点是否落在多边形内
关于地理空间数据,经常需要处理两个空间数据的关联关系.有很多种方法可以处理,通过编写程序算法,或者是调用数据库中对应的function.在mysql数据库中,https://dev.mysql.com ...
- shell中判断一个变量是否为0或者为某个具体的值
需求说明: 在实际写脚本的过程中,需要判断某个变量的值是否为某个数字, 比如,判断某个进程的数量是否为0用来确定进程是否存在,这样的情况. 简单来说,算术比较. 测试过程: 通过以下的脚本来判断mys ...
- C#中判断一个数组中是否存在某个数组值 及相关
声明:reference:http://www.cnblogs.com/icebutterfly/archive/2010/06/22/1762738.html:http://blog.csdn.ne ...
- shell脚本中判断一个字符串是否是空字符串
需求说明: 在写脚本的时候,有的时候,需要判断一个字符串是否为空,因此,在此写出如何判断一个字符串为空的方法. 简单来说,就是字符串的比较. 测试脚本: 以下的脚本用于测试str_1和str_2是否是 ...
- linux中判断一个命令是否执行成功
每一条基本命令执行后都有一个返回码,该返回码是用$?表示,执行成功的返回码是0,例如:if [ $? -ne 0 ];then 上一命令执行失败时的操作else 上一命令执行成功时的操作fi例如lin ...
- iOS中判断消息推送是否打开
根据 [[UIApplication sharedApplication] enabledRemoteNotificationTypes] 的返回值来进行判断,该返回值是一个枚举值,如下: typed ...
- Python中判断一个中文是否中文数字的方法
Python内置功能非常强大,在字符串内置函数中提供了一个判断字符串是否全数字的方法,而且这个方法不只是简单判断阿拉伯数字,包括中文数字和全角的阿拉伯数字都认识,这个函数就是字符串的isnumeric ...
随机推荐
- Linux编程学习笔记 -- Process
进程是一个程序的运行. 在一个程序中执行另一个执程序的方法有两种: 1)system 在shell中执行程序 2)fork + exec 复制一个进程,在进程中用新的程序替换原有的程序 for ...
- Demo学习: Closable Tabs
Closable Tabs 给tab页添加关闭按钮,设置UniTabSheet.Closable = True这样在tab页的右上角就会出现关闭图标,点击可以关闭当前tab页面: 1. 直接关闭,完成 ...
- Python学习_数据排序方法
Python对数据排序又两种方法: 1. 原地排序:采用sort()方法,按照指定的顺序排列数据后用排序后的数据替换原来的数据(原来的顺序丢失),如: >>> data1=[4,2, ...
- 手把手教你写LKM rookit! 之 杀不死的pid&root后门
......上一节,我们编写了一个基本的lkm模块,从功能上来说它还没有rootkit的特征,这次我们给它添加一点有意思的功能.我们让一个指定的进程杀不死, 曾经,想写一个谁也杀不死的进程,进程能捕捉 ...
- 关于谷歌Chrome浏览器的两个Bug?
1.网络资源下载莫名其妙的网络错误(也不支持续传?有时打开文件是损坏的?) 2.超级链接莫名的成了html下载?
- Windows 2008 R2系统开机时如何不让Windows进行磁盘检测?
开始→运行,在运行对话框中键入“chkntfs /t:0”,即可将磁盘扫描等待时间设置为0, 如果要在计算机启动时忽略扫描某个分区,比如C盘,可以输入“chkntfs /x c:”命令:如果要恢复对C ...
- [转载]AOP面向方面编程
1.引言 软件开发的目标是要对世界的部分元素或者信息流建立模型,实现软件系统的工程需要将系统分解成可以创建和管理的模块.于是出现了以系统模块化特性的面向对象程序设计技术.模块化的面向对象编程极度极地提 ...
- 【技术贴】删除360快捷搜索 ctrl+ctrl
恶心的功能,这么变态!如何删除360快捷键ctrl,桌面跳出360搜索怎么办?360 ctrl 删除 卸载方法: 桌面右下角,在360图标上右键点击设置,进入设置中心. 把 [开启快捷搜索功能,双击C ...
- c#做动态(gif)中文验证码
无意中在国外论坛发现一个gif动画类,我使用它来制作了一个动态验证码 : 一:首先新建一个类库 1:新建AnimatedGifEncoder类 using System; using System.C ...
- poj 2265 Bee Maja
题目的意思很容易理解.就是找两个不同坐标的对应关系.下面的思路转自POJ的论坛 首先,记由1到2的方向记为2,1到3的方向记为3……1到7的方向记为7,他们分别是:(0,1),(-1,1),(-1,0 ...

