gpt4 book ai didi

java - 如何将身份验证 header 添加到WebService stub ?

转载 作者:行者123 更新时间:2023-11-30 04:26:49 25 4
gpt4 key购买 nike

我在 Eclipse 和 RAD 7.0 中使用 Apache CXF、IBM Jax-WS 和 Axis 生成了 stub 。

在上述所有 3 个场景中,它给了我以下异常

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: ARERR [149] A user name must be supplied in the control record

搜索后我得出结论,我必须将身份验证信息添加到客户端 stub 创建的 Soap header 中。

我尝试了此链接上的答案

How do you add a Soap Header defined in a wsdl to a web service client in CXF?

但未能成功。我是 SOAP 和 WebServices 的新手

因此,如果有人对此做过工作,请提供帮助。

最佳答案

前几天我遇到了这个问题,这让我很头疼。生成 stub 时,您必须将标志 -XadditionalHeaders 添加到 wsimport 命令。

"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 对象并将其插入到 stub 方法的调用中,如下所示:

WSService service = new WSService(); 
WSPortTypePortType port = service.WSPortTypeSoap();
AuthenticationInfo auth = new AuthenticationInfo();
auth.setUserName(yourUsername);
auth.setPassword(yourPassword);
port.method(param1,param2,auth);

希望对你有帮助!

关于java - 如何将身份验证 header 添加到WebService stub ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15676728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com