HttpWebRequest和HttpWebResponse类的认识

1、HttpWebRequest和HttpWebResponse类
HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择。它们支持一系列有用的属性。这两个类位 于System.Net命名空间,默认情况下这个类对于控制台程序来说是可访问的。请注意,HttpWebRequest对象不是利用new关键字通过构 造函数来创建的,而是利用工厂机制(factory mechanism)通过Create()方法来创建的。接下来调用 HttpWebRequest.GetResponse()方法返回的是一个HttpWebResponse对象。我的是把HTTP响应的数据流 (stream)绑定到一个StreamReader对象,然后就可以通过ReadToEnd()方法把整个HTTP响应作为一个字符串取回。但是也可以通过 StreamReader.ReadLine()方法逐行取回HTTP响应的内容。
2、HttpWebRequest和HttpWebResponse类的用到的属性和方法
2.1 HttpWebRequest属性
CharacterSet        获取响应的字符集。
ContentEncoding      获取用于对响应体进行编码的方法。
ContentLength       获取请求返回的内容的长度。
ContentType        获取响应的内容类型。
Cookies          获取或设置与此响应关联的 Cookie。
Headers          获取来自服务器的与此响应关联的标头。
IsFromCache        获取一个 Boolean 值,该值指示此响应是否为从缓存中获取的.
IsMutuallyAuthenticated 获取一个 Boolean 值,该值指示客户端和服务器是否都已经过身份验证。
LastModified       获取最后一次修改响应内容的日期和时间。
Method          获取用于返回响应的方法。
ProtocolVersion      获取响应中使用的 HTTP 协议的版本。
ResponseUri       获取响应请求的 Internet 资源的 URI。
Server          获取发送响应的服务器的名称。
StatusCode        获取响应的状态。
StatusDescription     获取与响应一起返回的状态说明。
2.2 HttpWebRequest属性
Close         关闭响应流.
Dispose        释放由 HttpWebResponse 使用的非托管资源,并可根据需要释放托管资源。
GetResponseHeader 获取与响应一起返回的标头的内容。
GetResponseStream 获取流,该流用于读取来自服务器的响应的体。
InitializeLifetimeService  获取控制此实例的生存期策略的生存期服务对象。
2.3、HttpWebResponse属性
Buffer       获取或设置一个值,该值指示是否缓冲输出并在处理完整个响应之后发送它。
BufferOutput    获取或设置一个值,该值指示是否缓冲输出并在处理完整个页之后发送它。
Cache       获取网页的缓存策略(例如:过期时间、保密性设置和变化条款)。
CacheControl    获取或设置与 HttpCacheability 枚举值之一匹配的 Cache-Control HTTP 标头。
Charset      获取或设置输出流的 HTTP 字符集。
ContentEncoding 获取或设置输出流的 HTTP 字符集。
ContentType    获取或设置输出流的 HTTP MIME 类型。
Cookies      获取响应 Cookie 集合。
Expires      获取或设置在浏览器上缓存的页过期之前的分钟数。如果用户在页面过期之前返回同一页,则显示缓存的版本。提供 Expires 是为了与 ASP 的先前版本保持兼容。
ExpiresAbsolute 获取或设置从缓存中移除缓存信息的绝对日期和时间。提供 ExpiresAbsolute 是为了与 ASP 的先前版本保持兼容。
Filter        获取或设置一个包装筛选器对象,该对象用于在传输之前修改 HTTP 实体主体。
HeaderEncoding 获取或设置一个 Encoding 对象,该对象表示当前标头输出流的编码。
Headers      获取响应标头的集合。
IsClientConnected   获取一个值,通过该值指示客户端是否仍连接在服务器上。
IsRequestBeingRedirected   获取一个布尔值,该值指示客户端是否正在被传输到新的位置。
Output        启用到输出 HTTP 响应流的文本输出。
OutputStream    启用到输出 HTTP 内容主体的二进制输出。
RedirectLocation   获取或设置 Http Location 标头的值。
Status        设置返回到客户端的 Status 栏。
StatusCode     获取或设置返回给客户端的输出的 HTTP 状态代码。
StatusDescription 获取或设置返回给客户端的输出的 HTTP 状态字符串。
SubStatusCode   获取或设置一个限定响应的状态代码的值。
SuppressContent 获取或设置一个值,该值指示是否将 HTTP 内容发送到客户端。
TrySkipIisCustomErrors   获取或设置一个值,该值指定是否禁用 IIS 7.0 自定义错误。
2.4、HttpWebResponse方法
BinaryWrite            将一个二进制字符串写入 HTTP 输出流。
Clear               清除缓冲区流中的所有内容输出。
ClearContent           清除缓冲区流中的所有内容输出。
ClearHeaders           清除缓冲区流中的所有头。
Close               关闭到客户端的套接字连接。
DisableKernelCache        禁用当前响应的内核缓存。
End                将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 EndRequest 事件。
Flush               向客户端发送当前所有缓冲的输出。
Pics                将一个 HTTP PICS-Label 标头追加到输出流。
Redirect              已重载。 将客户端重定向到新的 URL。
RemoveOutputCacheItem     从缓存中移除与指定路径关联的所有缓存项。此方法是静态的。
SetCookie             基础结构。更新 Cookie 集合中的一个现有 Cookie。
TransmitFile            已重载。 将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。
Write               已重载。 将信息写入 HTTP 响应输出流。
WriteFile             已重载。 将指定的文件直接写入 HTTP 响应输出流。
WriteSubstitution         允许将响应替换块插入响应,从而允许为缓存的输出响应动态生成指定的响应区域。

3、HttpPos的列子如下

 public static string HttpPost(string url, string data)
        {
            if (url == "")
                return "";
            try
            {
                ServicePointManager.ServerCertificateValidationCallback =new RemoteCertificateValidationCallback(CheckValidationResult);
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
                if (!string.IsNullOrEmpty(data))
                {
                    byte[] byt = Encoding.UTF8.GetBytes(data);
                    request.ContentLength = byt.Length;
                    **//request.GetRequestStream获取用于写入请求的数据**
                    Stream sr = request.GetRequestStream();
                    sr.Write(byt, 0, byt.Length);
                    sr.Close();
                    sr.Dispose();
                }
                **//request.GetResponse()返回来自Inter资源的响应**
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string result;
                **//response.GetResponseStream()从inter资源返回的数据流**
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    result = reader.ReadToEnd();
                    reader.Close();
                }
                return result;
            }
            catch(Exception ex)
            {
                WriteLog(ex.Message);
                return "";
            }
        }

HttpGet的列子如下

    public static string HttpGet(string url)
        {
            if (url == "")
                return "";
            try
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                request.Method = "GET";
                request.Timeout = 2000;
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string result;
                using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                {
                    result = sr.ReadToEnd();
                    sr.Close();
                }
                return result;
            }
            catch (Exception ex)
            {
                WriteLog(ex.Message);
                return "";
            }
        }

Httpost和HttpGet调用的方法

 public static void WriteLog(string content)
        {
            string filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "tdapi.log");
            using (StreamWriter sr = new StreamWriter(filepath,true))
            { 
                string cot=string.Format("{0}:{1}",DateTime.Now.ToString(),content);
                sr.WriteLine(cot);
                sr.Close();
                }
        }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值