加速WebRequests的方法?

Bra*_*son 5 c# xml visual-studio

我做了一个可以访问和控制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;
    }
Run Code Online (Sandbox Code Playgroud)

代码工作正常,但是使用writeline语句我发现第一个请求需要大约400ms才能完成,而后续的请求只需要10到20ms.我有什么办法可以加快第一次请求吗?

Gab*_*uci 5

你做得很好.完成时间差异的原因可能是由于HTTP Keep-Alive.默认情况下,相同的连接将重复用于后续请求.所以第一个请求必须建立连接,这可能是为什么需要更长时间.其余请求使用相同的已打开连接.