参见英文答案 > How to perform a fast web request in C# 4个
我做了一个可以访问和控制Onvif相机的应用程序,它做得很好.然而,这是我第一次制作任何使用此类(或根本)的Web请求的应用程序,所以我假设我可能使用了相当基本的技术.
我很好奇的代码部分是这样的:
Uri uri = new Uri(
String.Format("http://" + ipAddr + "/onvif/" + "{0}", Service));
WebRequest request = WebRequest.Create((uri));
request.Method = "POST";
byte[] b = Encoding.ASCII.GetBytes(PostData);
request.ContentLength = b.Length;
//request.Timeout = 1000;
Stream stream = request.GetRequestStream();
//Send Message
XmlDocument recData = new XmlDocument();
try
{
using (stream = request.GetRequestStream())
{
stream.Write(b, 0, b.Length);
}
//Store response
var response = (HttpWebResponse) request.GetResponse();
if (response.GetResponseStream() != null)
{
string responsestring = new
StreamReader(response.GetResponseStream())
.ReadToEnd();
recData.LoadXml(responsestring);
}
}
catch (SystemException e)
{
MessageBox.Show(e.Message);
}
return recData;
}
代码工作正常,但是使用writeline语句我发现第一个请求需要大约400ms才能完成,而后续的请求只需要10到20ms.我有什么办法可以加快第一次请求吗?
解决方法:
你做得很好.完成时间差异的原因可能是由于HTTP Keep-Alive.默认情况下,相同的连接将重复用于后续请求.所以第一个请求必须建立连接,这可能是为什么需要更长时间.其余请求使用相同的已打开连接.