2009-10-02 16 views
5

Bir weburl'dan "toolStrip" i C# görüntüsünü görüntülemeye çalışıyorum. GörüntüyüResim Bir web URL'sinden C# yükleme

WebRequest requestPic5 = WebRequest.Create(icon_path); 
         requestPic5.Timeout = 5000; 
         WebResponse responsePic5 = null; 
         Image Myimg5 = null; 

if (requestPic5 != null) 
    { 
     responsePic5 = requestPic5.GetResponse(); 
     if (responsePic5 != null) 
     { 
      Myimg5 = Image.FromStream(responsePic5.GetResponseStream()); 
      } 
    } 
almak için aşağıdaki Methode kullanıyorum

Myimg5 = Image.FromStream(responsePic5.GetResponseStream()); bir istisna atar ancak resim url hala orada

Ama ne yazık ki çoğu zaman onun düzgün yüklenmemesi ve bazen atma onun başarısız 404 hatası

+0

Akışın ham içeriği nasıl görünüyor? HTML ile dekore edilmişler mi? –

+0

Teşekkürler Jacob, veri akışı için gereken bir png görüntü dosyasıdır. – raki

+0

Akışını hata ayıklama penceresine verebileceğinizi ve görüntü baytlarınızın çevresinde etiket olup olmadığını görüyordum. Ama daha yeni test ettim ve her şey benim için iyi çalıştı. Görüntünün size bir web isteği ile ulaştığından emin misiniz? Bu görüntüyü deneyebilir misin? http://sstatic.net/so/img/logo.png (stackoverflow logosu) ve işlerin işe yarayıp yaramadığını görün. –

cevap

6

Yanıt akışında, istemediğiniz bir şey var. Gerçekten sadece imgage dosyasının ham veriyi istiyor, bu nedenle kullanabilirsiniz:

new MemoryStream(new WebClient().DownloadData("http://address/file.ico"));

0

Muhtemelen web sitesi sıcak bağlama karşı korumalıdır. Görüntüler html sayfalarıyla karşılaştırıldığında büyüklükte olduğundan ve web siteleri kullanılan bant genişliği için ödediğinden, bu, web sitelerini diğer sitelerin bsndwidth hırsızlığından korumak için bir mekanizmadır.

Fikir bir çeşit kimlik doğrulama kullanıyor ve gerçek bir kullanıcının görüntü için istediğinden emin oluyor. Bu genellikle resmi içeren sayfada çerezler tarafından yapılır. Bu kurabiyeleri almanız ve isteğinizle birlikte göndermeniz gerekir. İsteğinize bir CookieContainer eklemeniz, ardından resmin bulunduğu sayfadan istendikten sonra görüntüyü almanız gerekir (aynı işlemi tüm adımlar için kullanın, çerezler eklenir ve otomatik olarak kullanılır).