Java 如何将身份验证头添加到WebService存根?
我已经使用ApacheCXF、IBMJAX WS和Axis以及Eclipse和RAD7.0生成了存根 在上述所有3种情况下,它给了我以下例外Java 如何将身份验证头添加到WebService存根?,java,web-services,authentication,soap,cxf,Java,Web Services,Authentication,Soap,Cxf,我已经使用ApacheCXF、IBMJAX WS和Axis以及Eclipse和RAD7.0生成了存根 在上述所有3种情况下,它给了我以下例外 Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: ARERR [149] A user name must be supplied in the control record 搜索之后,我得出结论,我必须将身份验证信息添加到由客户端存根创建的Soap头中 我在这个链接上尝试了
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: ARERR [149] A user name must be supplied in the control record
搜索之后,我得出结论,我必须将身份验证信息添加到由客户端存根创建的Soap头中
我在这个链接上尝试了答案
但是没有成功。我是SOAP和Web服务的新手
因此,如果有人对此进行了研究,请提供帮助。几天前我遇到了这个问题,这让我很头疼。在生成存根时,必须向wsimport命令添加标记-xaadditionalheaders
"C:\Program Files\Java\jdk1.X.X_XX\bin\wsimport.exe" -p com.company.package -keep -XadditionalHeaders -d folder1 http://mywsdllocation.com/doc.wsdl
其中:
-p:将包含生成类的包
-keep:保留.java文件(否则将只获取.class文件)
-XadditionalHeaders:将创建用于身份验证的类
-d:将放置生成类的文件夹
之后,您只需将生成的java文件复制到您的项目中,在选择的包(本例中为com.company.package)下。然后创建一个AuthenticationInfo对象并将其插入存根方法的调用中,如下所示:
WSService service = new WSService();
WSPortTypePortType port = service.WSPortTypeSoap();
AuthenticationInfo auth = new AuthenticationInfo();
auth.setUserName(yourUsername);
auth.setPassword(yourPassword);
port.method(param1,param2,auth);
希望有帮助 请提供您的wsdl。我使用了-XadditionalHeaders标志,但是所有生成的类在内容上都与之前生成的没有参数的类相同。