![](/img/trans.png)
[英]How will the client of a Web Service consuming a DoTNET vs JAVA wsdl differ?
[英]Pass Crendentials from dotNet client to Java Web Service
我有一个调用Java Web服务的点网应用程序。 我正在尝试通过将凭据传递给Java服务来实现身份验证。 这是设置凭据的点网代码。 如何在我的Java应用程序中获得这些凭证? 它们没有设置在标题中...
System.Net.NetworkCredential serviceCredentials = new NetworkCredential("user", "pass");
serviceInstance.Credentials = serviceCredentials;
serviceInstance是SoapHttpClientProtocol的一个实例。
我试过像这样注入WebServiceContext
@Resource
WebServiceContext wsctx;
并从标头中提取凭证,但它们不存在。
您没有以正确的方式将凭据传递给服务。 为了获得Authorize http请求标头,请执行以下操作:
// Create the network credentials and assign
// them to the service credentials
NetworkCredential netCredential = new NetworkCredential("user", "pass");
Uri uri = new Uri(serviceInstance.Url);
ICredentials credentials = netCredential.GetCredential(uri, "Basic");
serviceInstance.Credentials = credentials;
// Be sure to set PreAuthenticate to true or else
// authentication will not be sent.
serviceInstance.PreAuthenticate = true;
注意:请确保将PreAuthenticate
设置为true,否则将不发送身份验证。 有关更多信息,请参见本文 。
我不得不为此挖掘一些旧代码:)
更新:如下面注释中所述,使用提琴手检查了请求/响应标头之后,Java Web Service端缺少WWW-Authenticate
标头。
可以在本文中使用SoapHeaderInterceptor
(Apache CXF拦截器)在本文中找到实现“ JAX-WS基本认证”的更优雅的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.