2010-02-01 69 views
1

好的,這是一個隨機錯誤。我正在動態地將圖像添加到html頁面。這些圖像位於另一臺我無法控制的服務器上。圖像被命名爲這樣的事情: imageName10.jpg imageName11.jpg imageName13.jpg imageName14.jpg imageName16.jpg imageName17.jpg imageName19.jpg.Net WebRequest第一次失敗後一直失敗

讓我們的圖像列表上方。我想獲得所有可用的圖像,但我不知道有多少圖像。我知道它以字符串「imageName」開頭,有一個10到20之間的數字,然後以字符串「.jpg」結尾。我決定創建一個從10到20的循環,創建圖像名稱並將圖像標籤添加到我的html中。這工作,但我不想添加斷開的鏈接,所以我想先檢查圖像是否存在。爲此,我使用WebRequest以5秒的超時時間獲取圖像URL。如果超時,它會跳過鏈接並繼續循環。

 String dynamicHtmlStr = String.Empty; 
     dynamicHtmlStr += "<TABLE>"; 
     WebRequest webReq = null; 
     WebResponse webResp = null; 
     for (int i = 10; i < 20; i++) 
     { 
      try 
      { 
       webReq = WebRequest.Create("http://www.someurl.com/image/imageName" + i + ".jpg"); 
       webReq.Timeout = 5000; 
       webResp = webReq.GetResponse(); 

       dynamicHtmlStr += "<TR>"; 
       dynamicHtmlStr += "<TD>"; 
       dynamicHtmlStr += "<IMG http://www.someurl.com/image/imageName" + i + ".jpg"\">"; 
       dynamicHtmlStr += "</TD>"; 
       dynamicHtmlStr += "</TR>"; 
      } 
      catch (Exception) 
      { 
      } 
     } 
     dynamicHtmlStr += "</TABLE>"; 
     return dynamicHtmlStr; 

我的問題是這樣的: 將向WebRequest失敗後的第一次。之後的所有其他網絡請求似乎也失敗了。例如,拿上面的圖片列表。循環從10開始。它執行一個web請求來查看「imageName10.jpg」是否存在,獲得了很好的響應,我將html字符串添加到dynamicHtmlStr變量中。它再次循環,這次是11,並且仍然很好。然後我們繼續前進到12. 12是錯誤的,並且不會添加到dynamicHtmlStr,因爲它不存在,這是正確的。我們轉到13存在,但是這也失敗了,其後的每個其他web請求,無論它是否存在。

這對我來說沒有意義。難道我做錯了什麼?

回答

2

這個情況有點奇怪,我必須說。

我傾向於使用HttpWebRequest/HttpWebResponse類,並直接在流中取得巨大成功。

該請求非常簡單,看看herehere

一旦你創建你的要求,你可以看看這裏的響應:

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
{ 
    using (Stream responseStream = response.GetResponseStream()) 
    { 
     using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) 
     { 
      // Put in code to check response status. You'll probably get a 404 when not found. 
     } 
    } 
} 

另注:我知道環的大小是微小的,但你應該總是嘗試使用StringBuilder迭代字符串級聯。

+0

感謝您對StringBuilder的建議。我會嘗試HttpWebRequest/HttpWebResponse,看看會發生什麼 – 2010-02-01 11:46:08

+0

我的問題是,我沒有關閉響應流。謝謝。 – 2013-08-27 12:49:06

+0

做完這個後,我仍然得到這個問題... – 2016-02-10 11:16:11