首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么HttpWebRequest在C#中慢

为什么HttpWebRequest在C#中慢
EN

Stack Overflow用户
提问于 2015-05-10 12:13:19
回答 1查看 797关注 0票数 1

我使用这段代码来执行一个简单的REST请求。(代码主要来自于这个q:如何将JSON发布到服务器?)。

为什么这么慢?我使用VS 2013,第一次尝试大约需要15秒,然后大约4秒。在随后的尝试中,但是在另一种语言(Delphi)中,我可以发出一个http请求,它需要花费大约1秒的时间。

代码语言:javascript
复制
        var request = (HttpWebRequest)WebRequest.Create("http://jsonplaceholder.typicode.com/posts");
        request.ContentType = "application/json";
        request.Method = "POST";
        request.ServicePoint.Expect100Continue = false;

        using (var streamWriter = new StreamWriter(request.GetRequestStream()))
        {
            string json = new JavaScriptSerializer().Serialize(new
            {
                title = "foo",
                body = "bar",
                userId = "1"
            }); 
            streamWriter.Write(json);
        }

        var response = (HttpWebResponse)request.GetResponse();
        using (var streamReader = new StreamReader(response.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            textBox1.Text = result;
        }

你可以自己测试这段代码,它只是在网址上使用一个来自互联网的测试REST服务器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-10 13:13:24

你说第一次尝试是什么意思?这意味着我离开电脑一段时间后的第一次尝试

在到达服务器之前,有一个查找服务器IP地址的过程。这个过程称为Dns解析

第一次,您的应用程序必须经过Dns解析过程才能找到IP地址。一旦解析了IP地址,IP地址将被缓存在本地计算机中。

因此,进一步的调用不会经过Dns解析的过程,它可以使用缓存的IP。一段时间后,缓存将被删除,您将再次访问DNS服务器以解析IP地址。

这是你注意到的延迟我唯一能想到的解释。每当您注意到延迟,这可能意味着您击中Dns服务器仅仅是因为它是第一次或缓存是过期的。

为什么在其他环境中速度更快(Delphi)?

很抱歉我不能想出一个很好的理由。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30151249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档