こんにちは、UPS の設置を自動化しようとして問題が発生しています。Web ページは基本認証を使用し、ページの読み込み時にログインを求めます。IE でこの機能が無効になっているため、レジストリにアクセスして有効にすることはできません。httpwebrequest と response を使用して Cookie を取得しようとしましたが、Cookie を送り返すようには見えません。そのための私のロジックは、その Cookie を Web ブラウザー コントロールに使用して、ログインを要求しないようにすることでした。これが私のコードです。
Dim request As HttpWebRequest = DirectCast(WebRequest.Create("http://10.106.206.249"), HttpWebRequest) Dim mycache = New CredentialCache() mycache.Add(New Uri("http://10.106.206.249"), "Basic", New NetworkCredential("User", "Pass")) request.Credentials = mycache request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" request.CookieContainer = New CookieContainer() Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) Dim cook As Cookie For Each cook In response.Cookies Console.WriteLine("Cookie:") Console.WriteLine("{0} = {1}", cook.Name, cook.Value) Console.WriteLine("Domain: {0}", cook.Domain) Console.WriteLine("Path: {0}", cook.Path) Console.WriteLine("Port: {0}", cook.Port) Console.WriteLine("Secure: {0}", cook.Secure) Console.WriteLine("When issued: {0}", cook.TimeStamp) Console.WriteLine("Expires: {0} (expired? {1})", cook.Expires, cook.Expired) Console.WriteLine("Don't save: {0}", cook.Discard) Console.WriteLine("Comment: {0}", cook.Comment) Console.WriteLine("Uri for comments: {0}", cook.CommentUri) Console.WriteLine("Version: RFC {0}", IIf(cook.Version = 1, "2109", "2965")) ' Show the string representation of the cookie. Console.WriteLine("String: {0}", cook.ToString()) Next cook
間違ったクレデンシャルを使用すると、未解決のエラーがスローされるため、これがある程度機能することはわかっています。そのため、Cookie を取得していないか、Cookie が送信されていないようです。
私が試した別の方法は、通常の Web.Navigate でヘッダーを送信することですが、それはページを読み込んでログインを要求するように動作します。
Dim authData
Dim authHeader As String
authData = System.Text.UnicodeEncoding.UTF8.GetBytes("User:Pass")
authHeader = "Authorization: Basic: " & System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes("User:Pass")) & Chr(13) & Chr(10)
Web.Navigate("http://10.106.206.249", False, Nothing, authHeader)
ここで何か間違ったことをしているのかもしれません。