项目中用到了…在网上找到了一个,整理了一下,发出来
/*
* By: 落落
* URL: Www.MyLuoLuo.Com
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Web;
namespace NetXenClient.Tools
{
/// <summary>
/// 向指定URL发送Post信息的帮助类
/// </summary>
public class WebPostHelp
{
/// <summary>
/// 请求URL
/// </summary>
string url;
/// <summary>
/// 编码方式
/// </summary>
Encoding dataEncoding;
/// <summary>
/// 超时时间
/// </summary>
int timeout;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="url">需要要提交数据的URL</param>
/// <param name="dataEncoding">编码方式</param>
/// <param name="timeout">超时时间</param>
public WebPostHelp(string url,Encoding dataEncoding, int timeout)
{
this.url = url;
this.dataEncoding = dataEncoding;
this.timeout = timeout;
}
/// <summary>
/// Post数据
/// </summary>
/// <param name="postData">Post参数集合</param>
/// <param name="cookies">用来接收Cookie信息</param>
/// <returns></returns>
public string Post(Dictionary<string, string> postData, ref CookieContainer cookies)
{
//创建对象
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
//设置提交方式
webRequest.Method = "POST";
//是否保持连接
webRequest.KeepAlive = true;
// Content-TypeHTTP标头
webRequest.ContentType = "application/x-www-form-urlencoded";
//RefererHTTP 标头
webRequest.Referer = url.Remove(url.LastIndexOf("/"));
//设置连接超时的时间
webRequest.Timeout = timeout;
//设置Cookie容器
if (cookies == null)
{
cookies = new CookieContainer();
}
webRequest.CookieContainer = cookies;
if (postData != null && postData.Count > 0)
{
StringBuilder newStringBuilder = new StringBuilder();
//转换Data数据
foreach (KeyValuePair<string, string> kvp in postData)
{
newStringBuilder.Append(HttpUtility.UrlEncode(kvp.Key));
newStringBuilder.Append("=");
newStringBuilder.Append(HttpUtility.UrlEncode(kvp.Value));
newStringBuilder.Append("&");
}
//转换数据
byte[] byteData = this.dataEncoding.GetBytes(newStringBuilder.ToString().TrimEnd('&'));
//设置数据长度
webRequest.ContentLength = byteData.Length;
using (Stream reqStream = webRequest.GetRequestStream())
{
//写入
reqStream.Write(byteData, 0, byteData.Length);
}
}
//用来接收返回的数据
string ret = String.Empty;
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
cookies = webRequest.CookieContainer;
using (Stream resStream = webResponse.GetResponseStream())
{
using (StreamReader sr = new StreamReader(resStream, this.dataEncoding))
{
//读取返回 数据
ret = sr.ReadToEnd();
}
}
}
return ret;
}
}
}
完整代码如上