111,093
社区成员




public string POST(string url, byte[] data, string SoapAction, string userAgent)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
string errmsg = null;
string str_stream = null;
Stream response_stream = null;
Stream write_steam = null;
try
{
//判断URL是否为空
if (string.IsNullOrEmpty(url))
{
errmsg = "Http POST URL is null!";
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new ArgumentNullException(errmsg);
}
//判断是否为合法URI
try
{
Uri uri = new Uri(url);
}
catch (Exception)
{
errmsg = "Http POST URL isn't a vaild URI!";
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new ArgumentException(errmsg);
}
//判断请求数据是否为空
if (data == null || data.Length <= 0)
{
errmsg = "Http POST data is null!";
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new ArgumentNullException(errmsg);
}
//释放系统资源,对系统资源进行回收
System.GC.Collect();
//设置系统最大http连接数
System.Net.ServicePointManager.DefaultConnectionLimit = 200;
System.Net.ServicePointManager.SetTcpKeepAlive(true, 2000, 2000);
//设置请求参数
request = WebRequest.Create(url) as HttpWebRequest;
if (request == null)
{
errmsg = "Http Create Post WebRequest failed!";
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new System.Net.WebException(errmsg);
}
request.Method = "POST";
request.ContentType = "text/xml; charset=\"utf-8\"";
request.UserAgent = DefaultUserAgent;
request.Timeout = i_defaule_timeout;
request.KeepAlive = false;
//设置代理
if (!string.IsNullOrEmpty(userAgent))
{
request.UserAgent = userAgent;
}
//表明传输的是SOAP
if (!string.IsNullOrEmpty(SoapAction))
{
request.Headers.Add("SOAPACTION", SoapAction);
}
//设置传输内容长度
request.ContentLength = data.Length;
//获取写入数据对象,Stream类型
write_steam = request.GetRequestStream();
if (write_steam == null)
{
errmsg = "Http POST(WebResponse) Failed!(GetRequestStream Error)";
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new System.Net.WebException(errmsg);
}
//理解写入数据
write_steam.Write(data, 0, data.Length);
//立即推送数据
write_steam.Flush();
//获取请求返回
using (WebResponse webresponse = request.GetResponse())
{
try
{
if (webresponse == null)
{
errmsg = "Http POST(WebResponse) Failed!(Get Response Error)";
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new System.Net.WebException(errmsg);
}
}
catch (Exception ex)
{
errmsg = "Http POST(WebResponse) Failed(Get Response Error)! Exception: " + ex.Message;
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new System.Net.WebException(errmsg);
}
if (webresponse is HttpWebResponse)
{
response = webresponse as HttpWebResponse;
if (response == null || response.StatusCode != HttpStatusCode.OK)
{
errmsg = "Http POST(HttpWebResponse) Failed!(" + response.StatusCode + ")";
log.WriteLog(errmsg);
LastErrorCode = response.StatusCode;
LastStatusDescription = response.StatusDescription;
throw new System.Net.WebException(errmsg);
}
//获取请求返回内容
response_stream = response.GetResponseStream() as Stream;
if (response_stream == null)
{
errmsg = "Http POST(Result) Failed!(" + url + ")";
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new ArgumentException(errmsg);
}
//读取数据
str_stream = StreamToString(response_stream);
if (str_stream == null)
{
errmsg = "Http POST(Result) Failed!(Get Service String Failed)";
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new ArgumentException(errmsg);
}
}
else
{
errmsg = "Http POST(WebResponse) Failed!(Response isn't HttpWebResponse)";
log.WriteLog(errmsg);
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = errmsg;
throw new System.Net.WebException(errmsg);
}
}
//设置状态
LastErrorCode = HttpStatusCode.OK;
LastStatusDescription = "OK";
}
catch (Exception ex)
{
log.WriteLog("Http POST Execption!(" + ex.Message + ")(" + url + ")");
LastErrorCode = HttpStatusCode.BadRequest;
LastStatusDescription = "Http POST Execption!(" + ex.Message + ")(" + url + ")";
str_stream = null;
}
finally
{
if (write_steam != null)
{
//关闭读取操作
write_steam.Dispose();
write_steam.Close();
}
if (response_stream != null)
{
//关闭读取操作
response_stream.Dispose();
response_stream.Close();
}
//关闭连接
if (response != null)
{
response.Close();
response = null;
}
if (request != null)
{
request.Abort();
request = null;
}
}
return str_stream;
}