写出response对象设置响应头属性方法

 我来答
gonghanlin123
2016-05-07 · TA获得超过320个赞
知道小有建树答主
回答量:333
采纳率:50%
帮助的人:354万
展开全部
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     获取与响应一起返回的状态说明。
使用示例

C# 代码 复制

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。)
使用示例

C# 代码 复制

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通用辅助类

C# 代码 复制

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;
}
if (cookies != null)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies);
}
//如果需要POST数据
if(!(parameters==null||parameters.Count==0))
{
StringBuilder buffer = new StringBuilder();
int i = 0;
foreach (string key in parameters.Keys)
{
if (i > 0)
{
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
}
else
{
buffer.AppendFormat("{0}={1}", key, parameters[key]);
}
i++;
}
byte[] data = requestEncoding.GetBytes(buffer.ToString());
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
return request.GetResponse() as HttpWebResponse;
}

private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true; //总是接受
}
}
}
大大的Wiener
2018-04-12 · TA获得超过6.4万个赞
知道大有可为答主
回答量:392
采纳率:90%
帮助的人:33.3万
展开全部

1、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     获取与响应一起返回的状态说明。

使用示例

C# 代码   复制

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();

}


2、HttpWebResponse类的方法

Close         关闭响应流。 (重写 WebResponse..::.Close()()()。)

CreateObjRef       创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)

Dispose          释放由 HttpWebResponse 使用的非托管资源,并可根据需要释放托管资源。

GetLifetimeService      检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)

GetObjectData        基础结构。 使用将目标对象序列化所需的数据填充 SerializationInfo。 (重写 WebResponse..::.GetObjectData(SerializationInfo, StreamingContext)。)

GetResponseHeader    获取与响应一起返回的标头的内容。

GetResponseStream    获取流,该流用于读取来自服务器的响应的体。 (重写 WebResponse..::.GetResponseStream()()()。)

InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式