サーバーはHTTP基本認証などを使用していますか? HTTPベーシックを使用している場合は、WebリクエストのCredentials
プロパティを正しいユーザ名とパスワードを含むクレデンシャルに設定し、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フレームワークにおけるいくつかの奇妙な振る舞いがあります。あなたはそれがコードが言う何をすべきだと思うだろうが、それは実際にこのん:資格情報
Serverはあなたが与えた資格情報を使用して401
再送信要求に応答しないと
- はサーバーにリクエストを送りますそれは
- サーバーは要求を受け入れます。
壊れているように見える理由はわかりません。おそらくそれは私のマシンの奇抜であり、おそらくあなたには起こりません。
あなたのアプリがパフォーマンスに敏感ではなく、リクエストが大規模なデータのPOSTSでない場合は気づかないかもしれませんが、回避するために、手動でHTTP基本認証ヘッダーを作成し、 Headers
コレクションを手動で操作してHttpWebRequest
を手動で削除します。
あなたが記述する動作は、* nixのwgetと同じ動作だと思います。一度試行して失敗し、資格情報を送信して成功します。 – Stephan
これはhttp specの一部である何らかのチャレンジリクエストシーケンスだと思います。 – MGOwen