2011-12-27 7 views
7

私は次のように基本的なインライン資格情報を使用してURLには、HttpWebRequestを送信する必要があります。HttpWebRequestのHTTPの作成://ユーザー:パスワード@のdoamin /クエリURL

http://user:[email protected]/query 

私はURLを設定しようとしたがそのままでは、それは信用証明書(403を持っている)を渡すように見えませんでした。

request.Credentials = new NetworkCredentials("username","pasword") 

そして(http://domain/queryが得られる)のURLからそれらを削除するが、それでも同じ結果(403)を得た:
は、HttpWebRequestののCredentialsプロパティを設定しようとしました。

任意のブラウザから直接URLを使用すると、資格情報がOKになります。

私には何が欠けていますか?

[UPDATE - ANSWER]
ここでは私のために働いたコードだ:

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

答えて

1

まず、あなたのcredsをクラスを作成します。

NetworkCredential myCred = new NetworkCredential("username", "password"); 

はあなたcredsをキャッシュに追加します。

CredentialCache credsCache = new CredentialCache(); 

credsCache.Add(new Uri("www.foo.com"), "Basic", myCred); 

WebRequest wr = WebRequest.Create("www.foo.com"); 
wr.Credentials = credsCache; 

次に、彼はクレジットカードへのクレジットカード

+0

あなたが提案したコードを試してみましたが、うまくいきませんでした。フィドラーとのリクエストを見て、私は信用状が送信されたのを見ていません... – sternr

+0

面白いことに、ウリは次の構造を使用して作成します。http://を使わずにUriを作成しようとする "http://www.domain.com"接頭辞が失敗しました – sternr

0

プレーンテキストのパスワードは、もはや(それぞれのRFCによる)URLの有効な部分ではありません。すでに試したとおり、NetworkCredentialsを使用してください。 MSDN for code snippet/sample

NetworkCredential myCred = new NetworkCredential(
    SecurelyStoredUserName,SecurelyStoredPassword,SecurelyStoredDomain); 

CredentialCache myCache = new CredentialCache(); 

myCache.Add(new Uri("http://www.contoso.com"), "Basic", myCred); 
myCache.Add(new Uri("http://app.contoso.com"), "Basic", myCred); 

WebRequest wr = WebRequest.Create("http://www.contoso.com"); 
wr.Credentials = myCache; 

UPDを参照してください。 MSDNコードスニペットと比較して、 "無効なURI"例外を避けるために、文字列の先頭に "http://"を付ける必要があります。

+0

これはBAD URI例外をスローします。 –

+1

更新された答えのように '' http:// 'を追加してください。 –

関連する問題