2013-02-17 19 views
6

私はWebクライアントを使用してWebページをダウンロードし、500内部エラーにWebクライアントリモートサーバーがエラーを返しました:(500)の内部サーバーエラー

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; 
     } 
    } 

を取得し、呼び出ししようとしている:

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

私は他のサイトを使用する場合は、それだけで正常に動作します。このサイトで何が特別なのか分からない。

助けてください!

答えて

13

サーバは、正しいユーザエージェントを期待している可能性があります。

次のコードを更新します。すべての応答のための

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

感謝を。本当にそれを感謝します。 –

+1

可能であれば、ブラウザを偽装しないでください。 – svick

+0

svickコードでブラウザを偽装していない理由は何ですか? – rolls

関連する問題