using
System;
using
System.IO;
using
System.Net;
using
System.Text;
using
System.Collections.Generic;
using
System.Text.RegularExpressions;
namespace
scan
{
public
class
zzHttp
{
private
const
string
sContentType =
"application/x-www-form-urlencoded"
;
private
const
string
sUserAgent =
"Mozilla/4.0
(compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
;
public
static
string
Send(
string
data,
string
url)
{
return
Send(Encoding.GetEncoding(
"UTF-8"
).GetBytes(data),
url);
}
public
static
string
Send(
byte
[]
data,
string
url)
{
Stream
responseStream;
HttpWebRequest
request = WebRequest.Create(url)
as
HttpWebRequest;
if
(request ==
null
)
{
throw
new
ApplicationException(
string
.Format(
"Invalid
url string: {0}"
,
url));
}
request.ContentType
= sContentType;
request.Method
=
"POST"
;
request.ContentLength
= data.Length;
Stream
requestStream = request.GetRequestStream();
requestStream.Write(data,
0, data.Length);
requestStream.Close();
try
{
responseStream
= request.GetResponse().GetResponseStream();
}
catch
(Exception exception)
{
throw
exception;
}
string
str =
string
.Empty;
using
(StreamReader reader =
new
StreamReader(responseStream, Encoding.GetEncoding(
"UTF-8"
)))
{
str
= reader.ReadToEnd();
}
responseStream.Close();
return
str;
}
#region
同步通过POST方式发送数据
///
<summary>
///
通过POST方式发送数据
///
</summary>
///
<param name="Url">url</param>
///
<param name="postDataStr">Post数据</param>
///
<param name="cookie">Cookie容器</param>
///
<returns></returns>
public
string
SendDataByPost(
string
Url,
string
postDataStr,
ref
CookieContainer cookie)
{
HttpWebRequest
request = (HttpWebRequest)WebRequest.Create(Url);
if
(cookie.Count == 0)
{
request.CookieContainer
=
new
CookieContainer();
cookie
= request.CookieContainer;
}
else
{
request.CookieContainer
= cookie;
}
request.Method
=
"POST"
;
request.ContentType
=
"application/x-www-form-urlencoded"
;
request.ContentLength
= postDataStr.Length;
Stream
myRequestStream = request.GetRequestStream();
StreamWriter
myStreamWriter =
new
StreamWriter(myRequestStream, Encoding.GetEncoding(
"gb2312"
));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
HttpWebResponse
response = (HttpWebResponse)request.GetResponse();
Stream
myResponseStream = response.GetResponseStream();
StreamReader
myStreamReader =
new
StreamReader(myResponseStream, Encoding.GetEncoding(
"gb2312"
));
string
retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return
retString;
}
#endregion
#region
同步通过GET方式发送数据
///
<summary>
///
通过GET方式发送数据
///
</summary>
///
<param name="Url">url</param>
///
<param name="postDataStr">GET数据</param>
///
<param name="cookie">Cookie容器</param>
///
<returns></returns>
public
string
SendDataByGET(
string
Url,
string
postDataStr,
ref
CookieContainer cookie)
{
HttpWebRequest
request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr ==
""
?
""
:
"?"
)
+ postDataStr);
if
(cookie.Count == 0)
{
request.CookieContainer
=
new
CookieContainer();
cookie
= request.CookieContainer;
}
else
{
request.CookieContainer
= cookie;
}
request.Method
=
"GET"
;
request.ContentType
=
"text/html;charset=UTF-8"
;
HttpWebResponse
response = (HttpWebResponse)request.GetResponse();
Stream
myResponseStream = response.GetResponseStream();
StreamReader
myStreamReader =
new
StreamReader(myResponseStream, Encoding.GetEncoding(
"utf-8"
));
string
retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return
retString;
}
#endregion
public
string
zzget(
string
Url,
string
getdata,
string
type)
{
try
{
System.Net.WebRequest
wReq = System.Net.WebRequest.Create(Url + (getdata ==
""
?
""
:
"?"
)
+ getdata);
wReq.Method
=
"GET"
;
wReq.ContentType
=
"text/html;charset=UTF-8"
;
System.Net.WebResponse
wResp = wReq.GetResponse();
System.IO.Stream
respStream = wResp.GetResponseStream();
using
(System.IO.StreamReader reader =
new
System.IO.StreamReader(respStream, Encoding.GetEncoding(type)))
{
return
reader.ReadToEnd();
}
}
catch
(System.Exception ex)
{
}
return
""
;
}
///<summary>
///采用post发送请求
///</summary>
///<param
name="URL">url地址</param>
///<param
name="strPostdata">发送的数据</param>
///<returns></returns>
public
string
zzpost(
string
URL, IDictionary<
string
,
Object> strPostdata,
string
strEncoding)
{
StringBuilder
data =
new
StringBuilder();
foreach
(KeyValuePair<
string
,
Object> param
in
strPostdata)
{
data.Append(param.Key).Append(
"="
);
data.Append(param.Value.ToString());
data.Append(
"&"
);
}
data.Remove(data.Length-
1,1);
Encoding
encoding = Encoding.Default;
HttpWebRequest
request = (HttpWebRequest)WebRequest.Create(URL);
request.CookieContainer
=
new
CookieContainer();
request.Method
=
"post"
;
request.Accept
=
"text/html,
application/xhtml+xml, */*"
;
request.ContentType
=
"application/x-www-form-urlencoded"
;
byte
[]
buffer = encoding.GetBytes(data.ToString());
request.ContentLength
= buffer.Length;
request.GetRequestStream().Write(buffer,
0, buffer.Length);
/*
request.ContentLength
= data.Length;
Stream
myRequestStream = request.GetRequestStream();
StreamWriter
myStreamWriter =
new
StreamWriter(myRequestStream, Encoding.GetEncoding(
"gb2312"
));
myStreamWriter.Write(data);
myStreamWriter.Close();
*/
HttpWebResponse
response = (HttpWebResponse)request.GetResponse();
using
(StreamReader reader =
new
StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding(strEncoding)))
{
return
reader.ReadToEnd();
}
}
///
<summary>
///
清除文本中Html的标签
///
</summary>
///
<param name="Content"></param>
///
<returns></returns>
public
static
string
ClearHtml(
string
Content)
{
Content
= Zxj_ReplaceHtml(
"&#[^>]*;"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?marquee[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?object[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?param[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?embed[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?table[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"
"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?tr[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?th[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?p[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?a[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?img[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?tbody[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?li[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?span[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?div[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?th[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?td[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?script[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"(javascript|jscript|vbscript|vbs):"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"on(mouse|exit|error|click|key)"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"<\\?xml[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"<\\/?[a-z]+:[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?font[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?b[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?u[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?i[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?strong[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"</?strong[^>]*>"
,
""
,
Content);
Content
= Zxj_ReplaceHtml(
"
"
,
""
,
Content);
Regex
r =
new
Regex(
@"\s+"
);
Content
= r.Replace(Content,
""
);
Content.Trim();
string
clearHtml = Content;
return
clearHtml;
}
///
<summary>
///
清除文本中的Html标签
///
</summary>
///
<param name="patrn">要替换的标签正则表达式</param>
///
<param name="strRep">替换为的内容</param>
///
<param name="content">要替换的内容</param>
///
<returns></returns>
private
static
string
Zxj_ReplaceHtml(
string
patrn,
string
strRep,
string
content)
{
if
(
string
.IsNullOrEmpty(content))
{
content
=
""
;
}
Regex
rgEx =
new
Regex(patrn, RegexOptions.IgnoreCase);
string
strTxt = rgEx.Replace(content, strRep);
return
strTxt;
}
}
}