繁体   English   中英

如何在JAVA中使用UsernameToken创建SOAP API请求?

[英]How to create a SOAP API request with UsernameToken in JAVA?

我的程序在服务器上运行,需要使用Java对SOAP API进行客户端调用。

我使用SOUPUI通过JAX-WS Artifacts为API服务WSDL生成了客户端存根代码。 API服务器端需要一个UsernameToken。 我使用了jaxws-ri文档示例“如何在JAX-WS中进行基本身份验证?” 如下所示调用API。

HelloService service = new HelloService();
Hello proxy = (service.getHelloPort());

((BindingProvider)proxy).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "userfoo");
((BindingProvider)proxy).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "passbar"); 

Output output = proxy.doAction();
return output.getResult();

但是我在proxy.doAction()的步骤中proxy.doAction()异常。

异常:com.sun.xml.ws.fault.ServerSOAPFaultException:客户端从服务器接收到SOAP错误:security.wssecurity.WSSContextImpl.s02:com.ibm.websphere.security.WSSecurityException:异常org.apache.axis2.AxisFault:CWWSS6500E:没有可用于登录的呼叫者身份候选者。 运行时发生的操作:com.ibm.ws.wssecurity.handler.WSSecurityConsumerHandler$1@30ed30ed请参阅服务器日志以查找有关失败确切原因的更多详细信息。

在com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:193)
在com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:125)
在com.sun.xml.ws.client.sei.StubHandler.readResponse(StubHandler.java:253)
在com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:181)
在com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:258)
截断。 请参阅日志文件以获取完整的stacktrace

您能否给我一些有关如何使用UsernameToken调用API的建议? 还是需要任何服务器端配置?

感谢帖子JAX-WS密码类型PasswordText的回答。 我解决了我的问题。 另外,请参考JAX-WS:客户端中的SOAP处理程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM