为什么这个 HttpWebRequest 在 C# 中很慢
Why is this HttpWebRequest slow in C#
我正在使用这段代码来执行一个简单的 REST 请求。 (代码大多来自这个q:How to post JSON to the server?)。
为什么这么慢?我正在使用 VS 2013,第一次尝试大约需要 15 秒,然后大约需要 4 秒。在随后的尝试中,但使用另一种语言 (Delphi) 我可以发出一个 http 请求,并且它始终需要大约 1 秒。
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;
}
P.S。您可以自己测试此代码,它只是使用上面 url.
互联网上的测试 REST 服务器
What do you mean by first try? It means the first try after I leave the computer for a while
在到达服务器之前,有一个查找服务器IP地址的过程。这个过程叫做Dns Resolution.
第一次,您的应用程序必须经过 Dns 解析 过程才能找到 IP 地址。解析 IP 地址后,IP 地址将缓存在本地计算机中。
因此,进一步的调用不会经过 Dns 解析 的过程;它可以使用缓存的IP。一段时间后,缓存将被删除,您将再次访问 DNS 服务器以解析 IP 地址。
对于您注意到的延迟,这是我能想到的唯一解释。每当您注意到延迟时,这可能意味着您正在访问 Dns 服务器只是因为它是第一次或缓存已过期。
Why it is faster in other environment(Delphi)?
抱歉,我想不出一个好的理由。
我正在使用这段代码来执行一个简单的 REST 请求。 (代码大多来自这个q:How to post JSON to the server?)。
为什么这么慢?我正在使用 VS 2013,第一次尝试大约需要 15 秒,然后大约需要 4 秒。在随后的尝试中,但使用另一种语言 (Delphi) 我可以发出一个 http 请求,并且它始终需要大约 1 秒。
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;
}
P.S。您可以自己测试此代码,它只是使用上面 url.
互联网上的测试 REST 服务器What do you mean by first try? It means the first try after I leave the computer for a while
在到达服务器之前,有一个查找服务器IP地址的过程。这个过程叫做Dns Resolution.
第一次,您的应用程序必须经过 Dns 解析 过程才能找到 IP 地址。解析 IP 地址后,IP 地址将缓存在本地计算机中。
因此,进一步的调用不会经过 Dns 解析 的过程;它可以使用缓存的IP。一段时间后,缓存将被删除,您将再次访问 DNS 服务器以解析 IP 地址。
对于您注意到的延迟,这是我能想到的唯一解释。每当您注意到延迟时,这可能意味着您正在访问 Dns 服务器只是因为它是第一次或缓存已过期。
Why it is faster in other environment(Delphi)?
抱歉,我想不出一个好的理由。