微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 加速WebRequests的方法?

参见英文答案 > 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.认情况下,相同的连接将重复用于后续请求.所以第一个请求必须建立连接,这可能是为什么需要更长时间.其余请求使用相同的已打开连接.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。