私たちのクライアントには、c#.net アプリケーションから取得したい Java Web サービスがありますが、メソッドを使用または呼び出しようとすると、Internal Error
メッセージが表示されます。この Web サービスには、サーバー (WS がホストされている場所) を介して認証するためのユーザー名とパスワードが必要です。
Soap UI を使用して Web サービスをテストすると、Java WS から応答が返されますが、それは Preemptive Autorizathion オプションを選択した場合のみです。別のオプションを選択すると、上で書いたようにエラーが発生します。
WS は Java で開発されましたが、私たちのアプリケーションは .NET Framework 2.0 で開発されました。質問は、c# でプリエンプティブ認証を使用して認証する方法はありますか?
それが役立つ場合、WS は HTTPS サイトでホストされています。
これは、サーバーへの認証に使用しているコードです。
NetworkCredential netCredential = new NetworkCredential(username, password);
Uri uri = new Uri(service.Url);
ICredentials credentials = netCredential.GetCredential(uri, "Basic");
service.Credentials = credentials;
service.PreAuthenticate = true;
また、私はこのコードで試しました:
string usernamePassword = username + ":" + password;
CredentialCache mycache = new CredentialCache();
WebRequest myReq = WebRequest.Create(s.Url);
myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes((usernamePassword))));
mycache.Add(new Uri(service.Url), "Basic", new NetworkCredential(username, password));
myReq.Credentials = mycache;
service.Credentials = myReq.Credentials;
service.UserAgent = ".net FrameWork";
この問題を解決する方法はありますか?