HttpWebResponse类的属性和方法
HttpWebResponse类的属性和方法
HttpWebResponse类的属性和方法HttpWebResponse类的属性
CharacterSet 获取响应的字符集。
ContentEncoding 获取用于对响应体进行编码的方法。
ContentLength 获取请求返回的内容的长度。 (重写 WebResponse..::.ContentLength。)
ContentType 获取响应的内容类型。 (重写 WebResponse..::.ContentType。)
Cookies 获取或设置与此响应关联的 Cookie。
Headers 获取来自服务器的与此响应关联的标头。 (重写 WebResponse..::.Headers。)
IsFromCache 获取一个 Boolean 值,该值指示此响应是否为从缓存中获取的。 (继承自 WebResponse。)
IsMutuallyAuthenticated 获取一个 Boolean 值,该值指示客户端和服务器是否都已经过身份验证。 (重写 WebResponse..::.IsMutuallyAuthenticated。)
LastModified 获取最后一次修改响应内容的日期和时间。
Method 获取用于返回响应的方法。
ProtocolVersion 获取响应中使用的 HTTP 协议的版本。
ResponseUri 获取响应请求的 Internet 资源的 URI。 (重写 WebResponse..::.ResponseUri。)
Server 获取发送响应的服务器的名称。
StatusCode 获取响应的状态。
StatusDescription 获取与响应一起返回的状态说明。
使用示例
static void Main(string[] args)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.studyofnet.com"); //创建一个请求示例
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine(response.CharacterSet); //输出 utf-8
Console.WriteLine(response.ContentEncoding); //空
Console.WriteLine(response.ContentLength); //输出 10310
Console.WriteLine(response.ContentType); //输出 text/html charset=utf-8
CookieCollection cc = response.Cookies;
Console.WriteLine(cc.Count); //输出 0
WebHeaderCollection whc = response.Headers;
Console.WriteLine(whc.Count); //输出 9
foreach (string h in whc.AllKeys)
{
Console.WriteLine(h.ToString() + " " + whc[h].ToString()); //输出所有的响应头信息
}
Console.WriteLine(response.IsFromCache); //输出 false 该值指示响应是否从缓存获取的
Console.WriteLine(response.IsMutuallyAuthenticated); //输出 false 客户端和服务器端都已通过身份认证
Console.WriteLine(response.LastModified); //输出 2013-04-06 21:03:06 最后一次修改响应的时间和日期
Console.WriteLine(response.Method); //输出 Get 返回响应的方法
Console.WriteLine(response.ProtocolVersion); //输出 1.1 响应的HTTP协议的版本
Console.WriteLine(response.ResponseUri); //输出 http://www.studyofnet.com 响应请求的Interner资源的URI
Console.WriteLine(response.Server); //输出 BWS/1.0 发送响应的服务器的名称
Console.WriteLine(response.StatusCode); //输出 OK 获取响应的状态,这个不是状态码,而是状态描述,为什么不是200呢,奇怪啊,测试了好几个网站都是OK,而不是200
Console.WriteLine(response.StatusDescription); //输出 OK 这个是状态描述,
Console.ReadKey();
}
HttpWebResponse类的方法
Close 关闭响应流。 (重写 WebResponse..::.Close()()()。)
CreateObjRef 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
Dispose 释放由 HttpWebResponse 使用的非托管资源,并可根据需要释放托管资源。
GetLifetimeService 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
GetObjectData 基础结构。 使用将目标对象序列化所需的数据填充 SerializationInfo。 (重写 WebResponse..::.GetObjectData(SerializationInfo, StreamingContext)。)
GetResponseHeader 获取与响应一起返回的标头的内容。
GetResponseStream 获取流,该流用于读取来自服务器的响应的体。 (重写 WebResponse..::.GetResponseStream()()()。)
InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)
使用示例
class Program
{
static void Main(string[] args)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.studyofnet.com"); //创建一个请求示例
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine(response.GetResponseHeader("Content-Type")); //输出 text/html;charset=utf-8
Stream stream = response.GetResponseStream(); //获取响应的字符串流
StreamReader sr = new StreamReader(stream); //创建一个stream读取流
string html = sr.ReadToEnd(); //从头读到尾,放到字符串html李米
Console.WriteLine(html); //输出首页HTML代码
Console.ReadKey();
}
}
HttpWebResponse通用辅助类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.DirectoryServices.Protocols;
using System.ServiceModel.Security;
using System.Net;
using System.IO;
using System.IO.Compression;
using System.Text.RegularExpressions;
namespace Cang
{
/// <summary>
/// 有关HTTP请求的辅助类
/// </summary>
public class HttpWebResponseUtility
{
private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
/// <summary>
/// 创建GET方式的HTTP请求
/// </summary>
/// <param name="url">请求的URL</param>
/// <param name="timeout">请求的超时时间</param>
/// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>
/// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
/// <returns></returns>
public static HttpWebResponse CreateGetHttpResponse(string url,int? timeout, string userAgent,CookieCollection cookies)
{
if (string.IsNullOrEmpty(url))
{
throw new ArgumentNullException("url");
}
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.UserAgent = DefaultUserAgent;
if (!string.IsNullOrEmpty(userAgent))
{
request.UserAgent = userAgent;
}
if (timeout.HasValue)
{
request.Timeout = timeout.Value;
}
if (cookies != null)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies);
}
return request.GetResponse() as HttpWebResponse;
}
/// <summary>
/// 创建POST方式的HTTP请求
/// </summary>
/// <param name="url">请求的URL</param>
/// <param name="parameters">随同请求POST的参数名称及参数值字典</param>
/// <param name="timeout">请求的超时时间</param>
/// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>
/// <param name="requestEncoding">发送HTTP请求时所用的编码</param>
/// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
/// <returns></returns>
public static HttpWebResponse CreatePostHttpResponse(string url,IDictionary<string,string> parameters,int? timeout, string userAgent,Encoding requestEncoding,CookieCollection cookies)
{
if (string.IsNullOrEmpty(url))
{
throw new ArgumentNullException("url");
}
if(requestEncoding==null)
{
throw new ArgumentNullException("requestEncoding");
}
HttpWebRequest request=null;
//如果是发送HTTPS请求
if(url.StartsWith("https",StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion=HttpVersion.Version10;
}
else
{
request = WebRequest.Create(url) as HttpWebRequest;
}
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
if (!string.IsNullOrEmpty(userAgent))
{
request.UserAgent = userAgent;
}
else
{
request.UserAgent = DefaultUserAgent;
}
if (timeout.HasValue)
{
request.Timeout = timeout.Value;
}
您可能感兴趣
- C#中Serializable序列化
- C#获取上个月第一天和最后一天
- C#预处理器指令
- C# Task实现多线程
- C# Windows服务的创建、安装、调试
- C#如何读取csv格式文件
- C#静态变量、静态方法、静态类
- C#中ICollection介绍
- C#enum枚举
- C# Directory类的操作
- C#中的深拷贝与浅拷贝的区别
- C#中ArrayList与Array的区别
- C#排序算法的比较
- C# #define条件编译
- C# Checklistbox的用法
- C#中List和数组之间的转换
- 四月新番CP人气榜公布,《剃须》两度上榜,沙优不是女朋友(四月新番CP人气榜公布)
- 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜(2019年外媒秋季新番动画角色CP排行榜)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
热门推荐
- mysql索引建立及应用(MYSQL创建索引,这些知识应该了解)
- 香港云服务器租赁流程(租用香港云服务器的三大注意事项)
- react 查看word文件(React实现导入导出Excel文件)
- IEnumerable、GetEnumerator、IEnumerator之间的关系
- 怎么用织梦上传源码(如何把织梦dedecms数据生成json)
- extjs实现树形下拉框
- 织梦dedecms好吗(织梦dedecms单页制作教程)
- dedecms如何使用标签(DEDECMS首页调用最新评论和评论链接地址静态化实现代码)
- 云服务器选择七个原则(如何选择一个好的云服务器?)
- django框架详解(Django如何开发简单的查询接口详解)