花费太长时间来加载页面与HttpWebResponse
问题描述:
我试图访问网页上的信息。我第一次做到这一点。 问题在于它太慢了。只在一页上执行此操作,在浏览器上加载速度非常快,但在这里永远不会消失。 我唯一需要的就是页面背后的HTML,所以我得问,我的代码是以某种方式下载图片的吗? 任何帮助都可以加速这个过程。花费太长时间来加载页面与HttpWebResponse
string url;
HttpWebRequest pedido = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resposta = (HttpWebResponse)pedido.GetResponse();
//On the line above it takes forever to load.
StreamReader SR = new StreamReader(resposta.GetResponseStream());
string html;
string tituloTemp = "";
do
{
html = SR.ReadLine();
if (html.Contains("<title>"))
tituloTemp = html;
} while (!(html.Contains("<title>")));
SR.Close();
答
使用Fiddler检查交易。
它可能是一个DNS查询超时或认证质询。通过Fiddler,您可以看到浏览器和应用程序传输的时间分类。一切都会变得清晰。
答
你的问题很可能是ReadLine(),它只会在它换行时返回。如果页面没有换行符,那么您可能会看到超时。您也正在扫描两次,因此您应该重新考虑解析方法。
我建议您将整个响应读入内存,然后解析标签。这些链接说话C#解析器可能给你一个更强大的解决方案:
你确定它真的在浏览器中加载速度如此之快吗?在测试之前是否清除了浏览器缓存? – Aaronaught 2010-03-07 18:04:11
是的。大约一秒钟。该程序大约需要8秒钟。 – elvispt 2010-03-07 18:06:32