我们的客户有一个我们想从 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";
你知道如何解决这个问题吗?