2012-03-17 9 views
0

私はHttpWebRequestなどを取得して、必要なログインがあるWebページのHTMLを取得しようとしています。HttpWebRequestが動作しない(つまり、http:// username:[email protected])

http://username:[email protected]

しかしC#で、これは許可されていない401で失敗します。通常のブラウザであなたのような何かを行います。

資格情報も設定しようとしましたが、失敗します。私は何午前* ***

System.Net.WebRequest req = System.Net.WebRequest.Create(_domain); 
if (_domain.UserInfo.Length > 0) 
{ 
    string[] creds = _domain.UserInfo.Split(new char[] { ':' }); 
    req.Credentials = new System.Net.NetworkCredential(creds[0], creds[1], _domain.Authority); 
} 

req.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation; 
req.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.CacheIfAvailable); 
System.Net.HttpWebRequest _httpReq = (HttpWebRequest)req; 
_httpReq.CookieContainer = new CookieContainer(); 
_httpReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"; 
_httpReq.UnsafeAuthenticatedConnectionSharing = true; 
System.Net.WebResponse resp = req.GetResponse(); 

をお試しください。** ...私は失われたよ、ブラウザを装っ、Cookieを有効に別の

string credentials = _domain.UserInfo; 
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(_domain); 
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials))); 
request.PreAuthenticate = true; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

を試してみました私は間違っている?

+0

タイトルに「C#」などのプレフィックスを付けないでください。それがタグのためのものです。 –

答えて

0

この動作は仕様です(hereを参照)。この動作を変更する簡単な方法はないようです。その代わりに、資格情報をSystem.Net.NetworkCredentialsオブジェクトに入れて、CredentialsプロパティをWebリクエストのプロパティに設定する必要があります。

関連する問題