2016-07-21 10 views
0

オンラインで見つかったいくつかのことを含め、これを動作させるために私が考えることができるすべてを試しました。私がしようとしているのは、ログインする必要があるウェブサイトからファイル(直接リンクを持っている)をダウンロードすることだけです。WebClientダウンロードが許可されていないファイル

私は「UploadValues」で、次のことをやってみました:

  WebClient myWebClient = new WebClient(); 
      NameValueCollection myNameValueCollection = new NameValueCollection(); 
      myNameValueCollection.Add("username", this.UserName); 
      myNameValueCollection.Add("password", this.Password); 
      byte[] responseArray = myWebClient.UploadValues(felony, myNameValueCollection); 
      myWebClient.DownloadFile(felony, localfelony); 

、私も同様にヘッダ内のログイン情報を入れて試してみました。私はまた、あなたがコメントしたコードから見ることができるようにだけ、認証情報を設定しようとしました:どんなに私がしようとするもの

  WebClient client = new WebClient(); 
      //client.UseDefaultCredentials = false; 
      //client.Credentials = new NetworkCredential(this.UserName, this.Password); 
      client.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(this.UserName + ":" + this.Password))); 
      client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"); 
      //client.Headers.Add(HttpRequestHeader.Cookie, this.webBrowser.Document.Cookie); 
      client.DownloadFile(felony, localfelony); 

、私はそれをダウンロードするために得ることができる唯一のことは、ログインされて終わるファイルがあります私が渡したログイン情報を受け入れなかったかのように

私はヘッダーなどを見てきましたが、これがなぜ機能しないのかを説明する普通のものは表示されません。何か案は?ありがとう。

答えて

0

私はこれを前に試したことを誓うことができましたが、おそらく私はそれをちょっと違ったものにしていたと思います。だから、このように機能しました:

  WebClient client = new WebClient(); 
      client.UseDefaultCredentials = false; 
      client.Credentials = new NetworkCredential(this.UserName, this.Password); 
      client.Headers.Add(HttpRequestHeader.Cookie, "_gat=1; b46467afcb0b4bf5a47b2c6b22e3d284=mt84peq7u4r0bst72ejs5lb7p6; https://docs.stlucieclerk.com/=1,1; _ga=GA1.2.12049534.1467911267"); 
      client.DownloadFile(webaddress, localname); 

これは動作させたヘッダーのクッキーでした。私は前にそれをやったと思ったが、おそらく私は別のクッキーを含む何かをやった。

0

これは認証/認可の問題のようです。

これを引き起こす理由はたくさんある可能性があります。 1)認証/認可メカニズムで何らかのハッシュを使用している可能性があります。 2)誤った種類の認証メカニズムを使用している可能性があります(「基本」を参照)。 3)あなたは認証されているかもしれませんが、承認されていない可能性があります。

根本原因を見つける最も良い方法は次のとおりです。 Fiddlerを使用します。 UIページを使用してログインし、ファイルをダウンロードしてください。それをしながら、フィドラーセッションをキャプチャします。あなたが持っているコードを使って同じことをしようとします。再度、フィドラーセッションをキャプチャします。違いを見つけるためにフィドラーを比較してください。

これが役に立ちます。

+0

残念ながら、フィドラーのインストールを正式に要求する必要がありますが、これは数日かかるでしょう。私はChromeが "ネットワーク"タブに表示する情報を見てきましたが、私が試したことがうまくいかない理由を説明する何も表示されません。 –

0

は一時的に証明書の検証を変更してみてください:

System.Net.Security.RemoteCertificateValidationCallback r = System.Net.ServicePointManager.ServerCertificateValidationCallback; System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object s, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; }; //Do downloading here... System.Net.ServicePointManager.ServerCertificateValidationCallback = r;

これが意味するであろう、しかし、Webクライアントは、すべての証明書を受け入れ、その詳細はthisポストを参照してくださいだろうと。

+0

これはいずれのシナリオでも役立つようではありませんでした。 :( –

+0

申し訳ありませんが、私は似たような問題がありました。これで解決しました。 –

関連する問題