HttpWebRequestを使用して、ユーザー名とパスワードを必要とするhttpsURIを取得しようとしています。URIをブラウザに入れると、クレデンシャルを要求するダイアログがポップアップ表示され、機能します。HttpWebRequestを使用すると、401Unauthorizedエラーが発生します。
NetworkCredentialsのドキュメントには、SSLがサポートされていないと記載されていますが、使用するものが見つかりません。
HttpWebRequestを使用して、ユーザー名とパスワードを必要とするhttpsURIを取得しようとしています。URIをブラウザに入れると、クレデンシャルを要求するダイアログがポップアップ表示され、機能します。HttpWebRequestを使用すると、401Unauthorizedエラーが発生します。
NetworkCredentialsのドキュメントには、SSLがサポートされていないと記載されていますが、使用するものが見つかりません。
サーバーは HTTP 基本認証またはその他の種類の認証を使用していますか? HTTP Basic を使用している場合はCredentials
、Web 要求のプロパティを正しいユーザー名とパスワードを含む資格情報に設定し、PreAuthenticate
プロパティを true に設定できます。
以下に例を示します (テストされていないため、ガイドラインとしてのみ使用してください)。
var uri = new Uri("https://somesite.com/something");
var request = WebRequest.Create(uri) as HttpWebRequest;
request.Credentials = new NetworkCredential("myUserName","myPassword");
request.PreAuthenticate = true;
var response = request.GetResponse();
注: これを行った私の経験では、.NET フレームワークにはいくつかの奇妙な動作があります。コードが言うことをするべきだと思うかもしれませんが、実際にはこれを行います:
壊れているように見えるので、なぜこれを行うのかわかりません。おそらく、それは私のマシンの癖であり、あなたには起こらないでしょう.
アプリがパフォーマンスに敏感でなく、リクエストが大きなデータの POSTS ではない場合、おそらく気付かないでしょうが、それを回避するには、手動で HTTP 基本認証ヘッダーを作成し、HttpWebRequest
操作して手動で設定する必要がありました。Headers
コレクション。