c# - C# 中的多个 HTTP 请求

标签 c# .net

我需要向不同的服务器并行发送大约 200 个 HTTP 请求并获得响应。 我在 C# 中使用 HttpWebRequest 类。 但是当并行处理请求时,我没有看到很好的时间增强。 例如,如果一个请求需要 3 秒才能得到响应,2 个并行请求 - 6 秒,3 个请求 - 8 秒,4 个请求 - 11 秒...... 这不好,我希望应该有最好的时间,200 个请求大约 10 秒。 看起来只有 2-3 个请求并行执行,但超时在 WebRequest 对象创建后立即开始。 我尝试设置 DefaultConnectionLimitMaxServicePoints 值,但 id 没有帮助。据我了解,这些参数用于并行请求一个站点的数量。我需要对不同站点的请求。

我用来测试的代码示例:

ArrayList a = new ArrayList(150);

for (i = 50; i < 250; i++ )
{
   a.Add("http://207.242.7." + i.ToString() + "/");
}

for (i = 0; i < a.Count; i++)
{
    Thread t = new Thread(new ParameterizedThreadStart(performRequest));
    t.Start(a[i]);
}


static void performRequest(object ip)
{
      HttpWebRequest req = (HttpWebRequest)WebRequest.Create((stirng)ip);

      HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
}

谁遇到过这样的问题? 感谢您提出任何建议。

最佳答案

与其启动自己的线程,不如尝试使用 HttpWebRequest 的异步方法,例如 HttpWebRequest.BeginGetResponseHttpWebRequest.BeginGetRequestStream .

关于c# - C# 中的多个 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2972988/

相关文章:

c# - 将 mask 应用于位图并在运行时生成合成图像

c# - 使用 asp.net mvc 上传多个文件/文件路径

c# - 如何在不调整控件大小的情况下将控件居中? (.net Winforms)

c# - 孪生异常之谜

c# - 从另一个 Action 返回一个 Action 不起作用?

c# - 一个抽象类继承另一个抽象类的问题

c# - 使用特定字符串从 List<string> 中删除所有内容

c# - 最上面的表格,点击 "through"可能吗?

c# - 如何检查文件夹的可访问性?

c# - 使用存储库数据库的 WCF 自定义用户名和密码验证程序#