【发布时间】:2014-07-30 04:43:12
【问题描述】:
我有一个基于 HTTP 的 API,我可能需要多次调用它。问题是我无法让请求花费不到 20 秒,尽管通过浏览器发出的相同请求几乎是瞬时的。以下代码说明了到目前为止我是如何实现它的。
WebRequest r = HttpWebRequest.Create("https://example.com/http/command?param=blabla");
var response = r.GetResponse();
一种解决方案是发出异步请求,但我想知道为什么需要这么长时间以及是否可以避免它。我也尝试过使用 WebClient 类,但我怀疑它在内部使用了 WebRequest。
更新:
在发布模式下运行以下代码大约需要 40 秒(使用秒表测量):
WebRequest g = HttpWebRequest.Create("http://www.google.com");
var response = g.GetResponse();
我在一所大学工作,那里的网络配置可能会影响性能,但直接使用浏览器说明它应该几乎是即时的。
更新 2:
我将代码上传到远程计算机,它运行良好,因此结论一定是 .NET 代码与浏览器相比做了一些额外的事情,或者它在通过大学网络解析地址时遇到问题(代理问题或其他什么?! )。
【问题讨论】:
-
您如何确定是 Web 请求需要时间?我通常对 HttpWebRequest 类没有任何性能问题。您是否尝试过让应用程序执行多个调用,如果是,是否所有调用都花费了同样多的时间?
-
所有网址都会出现这种情况,例如 google.com?使用非 SSL 网址怎么样?
-
是的,Fredrik 的 cmets 和建议都很好。没有任何理由认为 HttpWebRequest 应该在任何方面表现不佳(更不用说 那个 很差) - 毕竟它使用与浏览器相同的协议。
-
在获取诸如“google.com”之类的网页响应时,您是否有同样的性能问题?
-
您是否在调试模式下运行?在调试中需要 20-30 秒的请求在发布模式下往往是近乎瞬时的。
标签: c# httpwebrequest