web-dev-qa-db-ja.com

WebClientリクエストを認証するにはどうすればよいですか?

Webclientを使用してサイトのページを呼び出しています。 Webページの結果をPDFに入れようとしているので、レンダリングされたページの文字列表現を取得しようとしています。問題は、リクエストが認証されないため、ログイン画面しか表示されないことです。 UseDefaultCredentialsプロパティをtrueに送信しましたが、同じ結果が得られます。以下は私のコードの一部です:

 WebClient webClient = new WebClient();
 webClient.Encoding = Encoding.UTF8;

 webClient.UseDefaultCredentials = true;
 return Encoding.UTF8.GetString(webClient.UploadValues(link, "POST",form));
32
smartdirt

どのような認証を使用していますか?フォーム認証の場合、せいぜい.ASPXAUTH Cookieを見つけてWebClientリクエストで渡す必要があります。

最悪の場合、機能しません。

2
John Saunders

WebClientオブジェクトに資格情報を与える必要があります。このようなもの...

 WebClient client = new WebClient();
 client.UseDefaultCredentials = true;
 client.Credentials = new NetworkCredential("username", "password");
94
Ryan Alford
Public Function getWeb(ByRef sURL As String) As String
    Dim myWebClient As New System.Net.WebClient()

    Try
        Dim myCredentialCache As New System.Net.CredentialCache()
        Dim myURI As New Uri(sURL)
        myCredentialCache.Add(myURI, "ntlm", System.Net.CredentialCache.DefaultNetworkCredentials)
        myWebClient.Encoding = System.Text.Encoding.UTF8
        myWebClient.Credentials = myCredentialCache
        Return myWebClient.DownloadString(myURI)
    Catch ex As Exception
        Return "Exception " & ex.ToString()
    End Try
End Function
1
Rouletabille