2009-07-02 23 views
3

私はVBアプリケーションからREST Webサービスにアクセスしています。私はHttpWebResponseオブジェクトを作成し、GetRequestStreamを呼び出すだけですが、GetResponseを呼び出すと401例外が発生します。私はできるだけ早く私が呼ぶと "webRequest.GetResponse()" 401例外を取得HttpWebRequest(.NET)による認証の処理

Dim webRequest = DirectCast(WebRequest.Create(endpoint), HttpWebRequest) 
webRequest.Method = "POST" 
webRequest.ContentLength = contentLength 
webRequest.ContentType = "application/x-www-form-urlencoded" 

request.Credentials = New NetworkCredential(Username, Password) 

' Works fine 
Using stream As Stream = webRequest.GetRequestStream() 
    stream.Write(data, 0, data.Length) 
End Using 

' Barfs 
Dim response As HttpWebResponse = DirectCast(webRequest.GetResponse(), HttpWebResponse) 

はここ(投稿用に変更)私のコードです。レスポンスには適切なレルムを持つ「WWW-Authenticate」ヘッダーがあります。私はフィドラー/ Wiresharkを用いてこれらの要求を監視することができないよう「真webRequest.PreAuthenticate =」を設定しようとしただけでなく、手動「webRequest.Headers.Add(HttpRequestHeader.Authorization、_authheader)」

とヘッダを設定していますこれはSSLトラフィックなので、私はそれを監視する方法があると確信しています、私はまだそれを見つけていません。事前に

おかげで、

--Connor

答えて

1

を設定することにより固定しているあなたの助けをみんなありがとう!問題は私がリダイレクトされたことでした!私がする必要があることは、投稿の正常終了時にリダイレクトされるURLを反映するようにアドレスヘッダを変更することだけだと思います。

3

、AUTHORIATIONヘッダを追加する手動で何かなどを追加してみてください...

string autorization = userName + ":" + password; 
byte[] binaryAuthorization = System.Text.Encoding.UTF8.GetBytes(autorization); 
autorization = Convert.ToBase64String(binaryAuthorization); 
autorization = "Basic " + autorization; 
webRequest.Add("AUTHORIZATION", autorization); 

はこれがで私のために働いていますCredentialsプロパティの設定に失敗した過去の日付。

+0

私はこれを試しましたが、それは私のためには機能しませんでした。 –

+0

私のWebリクエストを動作させるために認証ヘッダーを手動で追加する必要があるとは思えませんが、 'request.Credentials = New NetworkCredential(Username、Password)'は有効ではありませんでした。私はHttpWebRequestを使っていたので、私は 'request.Headers.Add(" AUTHORIZATION "、認可)を使ってAUTHORIZATIONを追加しました; – cwadding

0

これはあなたの問題ではないことは確かに可能だが、私は過去に認証の問題を持っていた

request.ProtocolVersion = HttpVersion.Version10 
関連する問題