流量统计:
Rixu Blog (日需博客)
日需博客,每日必需来踩踩哦..
posts - 108,comments - 54,trackbacks - 0
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;

namespace HttpWeb
{
    
/// <summary> 
    
///  Http操作类 
    
/// </summary> 
    public static class httptest
    {
        
/// <summary> 
        
///  获取网址HTML 
        
/// </summary> 
        
/// <param name="URL">网址 </param> 
        
/// <returns> </returns> 
        public static string GetHtml(string URL)
        {
            WebRequest wrt;
            wrt 
= WebRequest.Create(URL);
            wrt.Credentials 
= CredentialCache.DefaultCredentials;
            WebResponse wrp;
            wrp 
= wrt.GetResponse();
            
string reader = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding("gb2312")).ReadToEnd();
            
try
            {
                wrt.GetResponse().Close();
            }
            
catch (WebException ex)
            {
                
throw ex;
            }
            
return reader;
        }
        
/// <summary> 
        
/// 获取网站cookie 
        
/// </summary> 
        
/// <param name="URL">网址 </param> 
        
/// <param name="cookie">cookie </param> 
        
/// <returns> </returns> 
        public static string GetHtml(string URL, out string cookie)
        {
            WebRequest wrt;
            wrt 
= WebRequest.Create(URL);
            wrt.Credentials 
= CredentialCache.DefaultCredentials;
            WebResponse wrp;

            wrp 
= wrt.GetResponse();


            
string html = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding("gb2312")).ReadToEnd();

            
try
            {
                wrt.GetResponse().Close();
            }
            
catch (WebException ex)
            {
                
throw ex;
            }

            cookie 
= wrp.Headers.Get("Set-Cookie");
            
return html;
        }
        
public static string GetHtml(string URL, string postData, string cookie, out string header, string server)
        {
            
return GetHtml(server, URL, postData, cookie, out header);
        }
        
public static string GetHtml(string server, string URL, string postData, string cookie, out string header)
        {
            
byte[] byteRequest = Encoding.GetEncoding("gb2312").GetBytes(postData);
            
return GetHtml(server, URL, byteRequest, cookie, out header);
        }
        
public static string GetHtml(string server, string URL, byte[] byteRequest, string cookie, out string header)
        {
            
byte[] bytes = GetHtmlByBytes(server, URL, byteRequest, cookie, out header);
            Stream getStream 
= new MemoryStream(bytes);
            StreamReader streamReader 
= new StreamReader(getStream, Encoding.GetEncoding("gb2312"));
            
string getString = streamReader.ReadToEnd();
            streamReader.Close();
            getStream.Close();
            
return getString;
        }

        
/// <summary> 
        
/// Post模式浏览 
        
/// </summary> 
        
/// <param name="server">服务器地址 </param> 
        
/// <param name="URL">网址 </param> 
        
/// <param name="byteRequest">流 </param> 
        
/// <param name="cookie">cookie </param> 
        
/// <param name="header">句柄 </param> 
        
/// <returns> </returns> 
        public static byte[] GetHtmlByBytes(string server, string URL, byte[] byteRequest, string cookie, out string header)
        {
            
long contentLength;
            HttpWebRequest httpWebRequest;
            HttpWebResponse webResponse;
            Stream getStream;

            httpWebRequest 
= (HttpWebRequest)HttpWebRequest.Create(URL);
            CookieContainer co 
= new CookieContainer();
            co.SetCookies(
new Uri(server), cookie);

            httpWebRequest.CookieContainer 
= co;

            httpWebRequest.ContentType 
= "application/x-www-form-urlencoded";
            httpWebRequest.Accept 
=
                
"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
            httpWebRequest.Referer 
= server;
            httpWebRequest.UserAgent 
=
                
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
            httpWebRequest.Method 
= "Post";
            httpWebRequest.ContentLength 
= byteRequest.Length;
            Stream stream;
            stream 
= httpWebRequest.GetRequestStream();
            stream.Write(byteRequest, 
0, byteRequest.Length);
            stream.Close();
            webResponse 
= (HttpWebResponse)httpWebRequest.GetResponse();
            header 
= webResponse.Headers.ToString();
            getStream 
= webResponse.GetResponseStream();
            contentLength 
= webResponse.ContentLength;

            
byte[] outBytes = new byte[contentLength];
            outBytes 
= ReadFully(getStream);
            getStream.Close();
            
return outBytes;
        }
        
public static byte[] ReadFully(Stream stream)
        {
            
byte[] buffer = new byte[128];
            
using (MemoryStream ms = new MemoryStream())
            {
                
while (true)
                {
                    
int read = stream.Read(buffer, 0, buffer.Length);
                    
if (read <= 0)
                        
return ms.ToArray();
                    ms.Write(buffer, 
0, read);
                }
            }
        }

        
/// <summary> 
        
/// Get模式 
        
/// </summary> 
        
/// <param name="URL">网址 </param> 
        
/// <param name="cookie">cookies </param> 
        
/// <param name="header">句柄 </param> 
        
/// <param name="server">服务器 </param> 
        
/// <param name="val">服务器 </param> 
        
/// <returns> </returns> 
        public static string GetHtml(string URL, string cookie, out string header, string server)
        {
            
return GetHtml(URL, cookie, out header, server, "");
        }
        
/// <summary> 
        
/// Get模式浏览 
        
/// </summary> 
        
/// <param name="URL">Get网址 </param> 
        
/// <param name="cookie">cookie </param> 
        
/// <param name="header">句柄 </param> 
        
/// <param name="server">服务器地址 </param> 
        
/// <param name="val"> </param> 
        
/// <returns> </returns> 
        public static string GetHtml(string URL, string cookie, out string header, string server, string val)
        {
            HttpWebRequest httpWebRequest;
            HttpWebResponse webResponse;
            Stream getStream;
            StreamReader streamReader;
            
string getString = "";
            httpWebRequest 
= (HttpWebRequest)HttpWebRequest.Create(URL);
            httpWebRequest.Accept 
= "*/*";
            httpWebRequest.Referer 
= server;
            CookieContainer co 
= new CookieContainer();
            co.SetCookies(
new Uri(server), cookie);
            httpWebRequest.CookieContainer 
= co;
            httpWebRequest.UserAgent 
=
                
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
            httpWebRequest.Method 
= "GET";
            webResponse 
= (HttpWebResponse)httpWebRequest.GetResponse();
            header 
= webResponse.Headers.ToString();
            getStream 
= webResponse.GetResponseStream();
            streamReader 
= new StreamReader(getStream, Encoding.GetEncoding("gb2312"));
            getString 
= streamReader.ReadToEnd();

            streamReader.Close();
            getStream.Close();
            
return getString;
        }
        
/// <summary> 
        
/// 返回验证码图片流 
        
/// </summary> 
        
/// <param name="server">服务器地址 </param> 
        
/// <param name="URL">验证码网址 </param> 
        
/// <param name="cookie">cookie </param> 
        
/// <returns> </returns> 
        public static Stream GetStreamByBytes(string server, string URL, string cookie)
        {
            Stream stream 
= GetCode(server, URL, cookie);
            
return stream;
        }

        
/// <summary> 
        
/// //获取验证码 
        
/// </summary> 
        
/// <param name="server">服务器地址 </param> 
        
/// <param name="url">验证码网址 </param> 
        
/// <param name="cookie">cookie </param> 
        
/// <returns> </returns> 
        public static Stream GetCode(string server, string url, string cookie)
        {

            HttpWebRequest httpWebRequest;

            httpWebRequest 
= (HttpWebRequest)HttpWebRequest.Create(url);
            CookieContainer co 
= new CookieContainer();
            co.SetCookies(
new Uri(server), cookie);
            httpWebRequest.CookieContainer 
= co;

            HttpWebResponse response 
= (HttpWebResponse)httpWebRequest.GetResponse();
            Stream stream 
= response.GetResponseStream();
            
return stream;

        }
        
/// <summary> 
        
/// 获取html 
        
/// </summary> 
        
/// <param name="server"> </param> 
        
/// <param name="url"> </param> 
        
/// <param name="cookie"> </param> 
        
/// <returns> </returns> 

        
public static string GetUser(string server, string url, string cookie)
        {
            
string getString = "";
            
try
            {
                HttpWebRequest httpWebRequest;
                StreamReader streamReader;


                httpWebRequest 
= (HttpWebRequest)HttpWebRequest.Create(url);
                CookieContainer co 
= new CookieContainer();
                co.SetCookies(
new Uri(server), cookie);
                httpWebRequest.CookieContainer 
= co;

                HttpWebResponse response 
= (HttpWebResponse)httpWebRequest.GetResponse();

                Stream stream 
= response.GetResponseStream();


                streamReader 
= new StreamReader(stream, Encoding.GetEncoding("gb2312"));
                getString 
= streamReader.ReadToEnd();


                
try
                {
                    httpWebRequest.GetResponse().Close();
                }
                
catch (WebException ex)
                {
                    
throw ex;
                }
                streamReader.Close();
                stream.Close();

            }
            
catch
            {
            }
            
return getString;

        }

    }

}
Logo
作者:Gezidan
出处:http://www.rixu.net    
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
本文转载自 http://www.cnblogs.com/afish1984/archive/2009/07/17/1525466.html
posted on 2011-09-28 13:52 日需博客 阅读(4238) 评论(0)  编辑 收藏 引用 所属分类: C#技术文章转载

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理