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