2012-11-17 130 views
-1

因此,我发送一个httpwebrequest到一个特定的网站,我需要从该网站的图像,但这个图像加载3-5秒后请求完成,所以来源不包含图像,我要做出某种延迟的,所以我可以在几秒钟后,得到的回应,这是我的代码:HttpWebRequest图像加载延迟

HttpWebRequest req1 = (HttpWebRequest)WebRequest.Create("url");    
      using(var httpResponse = req1.GetResponse()) 
      { 
       using (var ResponseStream = httpResponse.GetResponseStream()) 
       { 
        if (ResponseStream != null) 
        { 
         using (StreamReader sr = new StreamReader(ResponseStream)) 
         { 

          string response = sr.ReadToEnd();        
          var doc = new HtmlAgilityPack.HtmlDocument(); 
          doc.Load(ResponseStream); 

          foreach(HtmlNode node in doc.DocumentNode.SelectNodes("src"))//it's not working because the source does not contain the image 
          { 
           pictureBox1.ImageLocation = node.ToString(); 
          } 
         } 
        } 
       } 
      } 
+0

获得响应比什么时间晚几秒?听起来这可能是客户端程序延迟,例如,在Javascript中...但目前你基本上不清楚。 –

+0

正如我所说的网站几秒钟后加载图像,所以我需要几秒钟后的回应,以捕捉该图像,我想我很清楚 –

+0

不,你真的不是。你需要考虑这里发生的事情。乔希的回答基本上提供了更多的细节。这不是在几秒钟后向服务器询问响应的问题 - 这与浏览器*在响应中的作用有关。 –

回答

3

什么是可能发生的是,页面加载,然后一个Javascript事件触发,使一个单独调用服务器来加载图像。延迟您的HTTP请求不会帮助您实现您的愿望。

我建议

  1. 打开谷歌浏览器的页面,然后按CTR-Shift-J键,弹出开发工具。
  2. 点击网络标签。
  3. 点击开发者工具底部的“图片”。
  4. 点击网络标签。
  5. 导航到包含图像的页面。您将在Developer Tools中看到对该图片的请求。
  6. 尝试并找出在Javascript中创建请求的位置。

如果您提供指向您正在讨论的网页的链接,我或其他人可能会进一步澄清。

+0

https://edit.yahoo.com/registration?.src=fpctx&.intl=us&.done=http%3A%2F%2Fwww.yahoo.com%2F –

+0

另请参见@ scotthanselman的优秀帖子互联网不是一个黑盒子:http://www.hanselman.com/blog/TheInternetIsNotABlackBoxLookInside.aspx – Nate

+0

我仔细检查过,但我仍然不知道如何处理它 –