执行HTTP POST请求。

public string DoICBCPost(string url, IDictionary<string, string> parameters, string _Charset)
{
HttpWebRequest req = GetWebRequest(url, "POST");
ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();
req.ContentType = string.Format("application/x-www-form-urlencoded;charset={0}", Charset);

byte[] postData = Encoding.UTF8.GetBytes(BuildQueryNoneCode(parameters));
Stream reqStream = req.GetRequestStream();
reqStream.Write(postData, 0, postData.Length);
reqStream.Close();

HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
Encoding encoding = Encoding.GetEncoding(_Charset);
return GetResponseAsString(rsp, encoding);
}

 

 

 

public HttpWebRequest GetWebRequest(string url, string method)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.ServicePoint.Expect100Continue = false;
req.Method = method;
req.KeepAlive = true;
req.UserAgent = "Top4Net";
req.Timeout = this._timeout;
return req;
}

 

 

public static string BuildQueryNoneCode(IDictionary<string, string> parameters)
{
StringBuilder postData = new StringBuilder();
bool hasParam = false;

IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
while (dem.MoveNext())
{
string name = dem.Current.Key;
string value = dem.Current.Value;
// 忽略参数名或参数值为空的参数
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))
{
if (hasParam)
{
postData.Append("&");
}

postData.Append(name);
postData.Append("=");
postData.Append(value);
//postData.Append(Uri.EscapeDataString(value));
hasParam = true;
}
}

return postData.ToString();
}

 

 

 

/// <summary>
/// 把响应流转换为文本。
/// </summary>
/// <param name="rsp">响应流对象</param>
/// <param name="encoding">编码方式</param>
/// <returns>响应文本</returns>
public string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
{
StringBuilder result = new StringBuilder();
Stream stream = null;
StreamReader reader = null;

try
{
// 以字符流的方式读取HTTP响应
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);

// 每次读取不大于256个字符,并写入字符串
char[] buffer = new char[256];
int readBytes = 0;
while ((readBytes = reader.Read(buffer, 0, buffer.Length)) > 0)
{
result.Append(buffer, 0, readBytes);
}
}
finally
{
// 释放资源
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}

return result.ToString();
}

 

posted @ 2016-08-12 14:05  applekingghfhfhbr  阅读(207)  评论(0编辑  收藏  举报