C#网络通信
来源:互联网 发布:80端口是什么服务 编辑:程序博客网 时间:2024/04/26 06:55
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.UserAgent = sUserAgent;
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;
//request.Timeout = 1000;
//request.ReadWriteTimeout = 3000;
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);
// Get the response instance.
wReq.Method =
"GET"
;
wReq.ContentType =
"text/html;charset=UTF-8"
;
System.Net.WebResponse wResp = wReq.GetResponse();
System.IO.Stream respStream = wResp.GetResponseStream();
// Dim reader As StreamReader = New StreamReader(respStream)
using
(System.IO.StreamReader reader =
new
System.IO.StreamReader(respStream, Encoding.GetEncoding(type)))
{
return
reader.ReadToEnd();
}
}
catch
(System.Exception ex)
{
//errorMsg = ex.Message;
}
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)
{
//IDictionary<string, Object> idc = new Dictionary<string, object>();
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;
}
}
}
0 0
- C#网络通信
- c#网络通信
- c# 网络通信
- C#网络通信
- c#网络通信实验教程
- C#网络通信:TCP连接
- c#下的Socket网络通信(类库)
- C#与网络通信研究(一)
- C# 网络编程实例 UDP TCP通信
- C# 利用socket实现语音网络通信
- C#实现简单的网络通信
- C# Socket网络通信初探(一)
- c#网络通信框架networkcomms内核解析
- C# 网络通信大小端转换类
- C# 通俗解释网络通信中的“报头”
- C#网络编程-简单的通信源码
- C#网络通信(2)--TCP编程和多线程
- DirectX编程:C#中利用Socket实现网络语音通信
- IOS中得block代码块的定义及使用
- 平板电脑的ARM和X86架构
- 常见的几种FLASH存储器
- 安卓HBOOT界面详细介绍
- 安卓手机Recovery刷机教程
- C#网络通信
- 手机CPU与电脑CPU的不同
- 手机内存跟电脑内存的区别
- 程序、进程与线程的关系
- 智能卡与芯片操作系统
- 六大iT公司的组织结构
- 腾讯和阿里重组事业群制
- 远程登录的安全外壳协议SSH
- SSL协议与加密程序库OpenSSL