5

我们的客户有一个我们想从 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";  

你知道如何解决这个问题吗?

4

0 回答 0