private string Post(string xml, string url)
{
System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接
string result = "";//返回结果
HttpWebRequest request = null;
HttpWebResponse response = null;
HttpWebRequest.DefaultWebProxy = null;
ServicePointManager.DefaultConnectionLimit = 20; //设置最大连接数
try
{
/***************************************************************
* 下面设置HttpWebRequest的相关属性
* ************************************************************/
request = (HttpWebRequest)WebRequest.Create(url);
request.Proxy = null;
request.Method = "POST";
request.KeepAlive = false;
request.ServicePoint.Expect100Continue = false;
request.AllowWriteStreamBuffering = false;
request.AllowAutoRedirect = true;
request.AutomaticDecompression = DecompressionMethods.GZip;
//设置POST的数据类型和长度
request.ContentType = "text/xml";
request.SendChunked = true; //分段发送
byte[] data = System.Text.Encoding.UTF8.GetBytes(xml);
//request.ContentLength = data.Length;
//往服务器写入数据
var start = DateTime.Now;
using (Stream reqStream = request.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
}
var end = DateTime.Now;
int timeCost = (int)((end - start).TotalMilliseconds);
LogHelper.Info("Post", "GetRequestStream时间花费2015-12-27:" + timeCost.ToString());
//获取服务端返回
response = (HttpWebResponse)request.GetResponse();
//获取服务端返回数据
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
result = sr.ReadToEnd().Trim();
sr.Close();
}
catch (System.Threading.ThreadAbortException e)
{
LogHelper.Debug("HttpService", "Thread - caught ThreadAbortException - resetting.Exception message: " + e.Message + "");
System.Threading.Thread.ResetAbort();
}
catch (WebException e)
{
LogHelper.Debug("HttpService", e.Message);
if (e.Status == WebExceptionStatus.ProtocolError)
{
LogHelper.Debug("HttpService", "StatusCode:" + ((HttpWebResponse)e.Response).StatusCode);
LogHelper.Debug("HttpService", "StatusDescription:" + ((HttpWebResponse)e.Response).StatusDescription);
}
}
catch (Exception e)
{
LogHelper.Debug("HttpService", "StatusCode:" + e.ToString());
}
finally
{
//关闭连接和流
if (response != null)
{
response.Close();
LogHelper.Info("info", "response.Close();");
}
if (request != null)
{
request.Abort();
LogHelper.Info("info", "request.Abort();");
}
}
return result;
}
LogHelper.Info("Post", "GetRequestStream时间花费2015-12-27:" + timeCost.ToString());
这个地方检测了GetRequestStream 的时间 第一次很慢 然后在访问就快乐 过一段时间又慢了