2013-02-17 12 views
6

Próbuję pobrać strony za pomocą WebClient i pojawia się błąd wewnętrzny 500webclient Zdalny serwer zwrócił błąd: (500) Internal Server Error

public class AsyncWebClient 
    { 
     public string GetContent(string url) 
     { 
      return GetWebContent(url).Result.ToString(); 
     } 
     private Task<string> GetWebContent(string url) 
     { 
      var wc = new WebClient(); 
      TaskCompletionSource<string> tcs = new TaskCompletionSource<string>(); 

      wc.DownloadStringCompleted += (obj, args) => 
      { 
       if (args.Cancelled == true) 
       { 
        tcs.TrySetCanceled(); 
        return; 
       } 

       if (!String.IsNullOrEmpty(args.Result)) 
        tcs.TrySetResult(args.Result); 
      }; 

      wc.DownloadStringAsync(new Uri(url)); 
      return tcs.Task; 
     } 
    } 

i zadzwonić:

var wc =new AsyncWebClient(); 
var html = wc.GetContent("http://truyen.vnsharing.net/"); >> always get the above error 

jeśli używam innej strony, to działa dobrze. nie wiem, co jest wyjątkowe w tej witrynie.

Proszę o pomoc!

Odpowiedz

13

Serwer najprawdopodobniej oczekuje poprawnego User-Agenta.

zaktualizować kod do następujących:

var wc = new WebClient(); 
wc.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 
TaskCompletionSource<string> tcs = new TaskCompletionSource<string>(); 
+0

dzięki za odpowiedź. naprawdę to doceniam. –

+1

Jeśli to możliwe, nie podszywaj się pod przeglądarkę. – svick

+0

svick, co jest przyczyną nie podszywania się pod przeglądarkę w kodzie? – rolls

Powiązane problemy