2010-12-27 3 views
2

если эта проблема обсуждалась ранее, извините за вопрос снова ..WebClient скачать проблема

Я хочу, чтобы загрузить изображение из URL с помощью класса System.Net.WebClient.

Когда я пытаюсь загрузить изображение (например, логотип google) .it не возникает никаких ошибок, но некоторые изображения происходят с ошибками. Я не понимаю, почему эти ошибки.

как я могу исправить эту проблему?

мой кода:

WebClient client = new WebClient(); 
    try 
    { 
     //Downloads the file from the given url to the given destination           
     client.DownloadFile(urltxt.Text, filetxt.Text); 
     return true; 
    } 
    catch (WebException w) 
    { 
     MessageBox.Show(w.ToString()); 
     return false; 
    } 
    catch (System.Security.SecurityException) 
    { 
     MessageBox.Show("securityexeption"); 
     return false; 
    } 
    catch (Exception) 
    { 
     MessageBox.Show("exception"); 
     return false; 
    } 

Ошибка:

System.Net.WebException: Базовое соединение закрыто: Непредвиденная ошибка на ПРИЕМ .--> System.IO.IOException : Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом .--> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом ... bla bla

Спасибо за помощь.

ответ

1

Вам нужно будет запустить что-то вроде Fiddler, чтобы посмотреть, что происходит на транспортном уровне, но IMO это звучит, возможно, вы слишком сильно наносили им удары, и сервер немного отключил вас (да: многие сайты будут делать это, если вы нажмете их агрессивно, то есть через скрипт).

В частности, так как вы говорите Google: см terms of service (курсив мой):

5,3 Вы соглашаетесь не осуществлять доступ (или попытки доступа) любых Услуг любыми другими, чем через средства интерфейс, предоставляемый Google, если только вам не разрешено делать это в отдельном соглашении с Google. Вы конкретно соглашаетесь не получать доступ (или пытаться получить доступ) к любым из Сервисов с помощью любых автоматизированных средств (включая использование скриптов или веб-сканеров) и должны обеспечивать соблюдение инструкций, изложенных в любом файле robots.txt, присутствующем на Услуги.

Это также довольно часто для сайтов, чтобы блокировать доступ к изображениям на основе заголовка HTTP реферера, чтобы препятствовать межсайтовое вложение их изображения в вашего сайта.

+0

+1: абсолютно, может быть причиной. – TalentTuner

1

Причина получения этой ошибки может быть связана с сетью или клиентский компьютер не может получить доступ к удаленному изображению (сетевая проблема, брандмауэр, ...) и не имеет ничего общего с .NET, WebClient или программированием. Удаленный сайт также может регулировать доступ, если вы пытаетесь отправить много запросов с одного и того же IP-адреса.

Смежные вопросы