我正在尝试使用来自Netbeans的gSoap生成的wsdl.Web服务要求传入UserNameToken.当我使用SoapUI中的wsdl(有效)时,它发送:
<wsse:Username>myname</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">mypass</wsse:Password>
Run Code Online (Sandbox Code Playgroud)
但是,当我使用处理程序(如何使用Java JAX-WS添加SOAP Header)从Netbeans尝试它时,如下所示:
String prefix = "wsse";
String uri = "http://...wsssecurity...";
SOAPElement securityElem = factory.createElement("Security",prefix,uri);
SOAPElement UserNametokenElem = factory.createElement("UserNameToken",prefix,uri);
SOAPElement UsernameElem = factory.createElement("wsse:Username");
UsernameElem.addTextNode("myname");
SOAPElement PasswordElem = factory.createElement("Password");
PasswordElem.addTextNode("mypass");
UserNametokenElem.addChildElement(UsernameElem);
UserNametokenElem.addChildElement(PasswordElem);
securityElem.addChildElement(UserNametokenElem);
SOAPHeader header = envelope.addHeader();
header.addChildElement(securityElem);
Run Code Online (Sandbox Code Playgroud)
它会像这样生成soap标头:
<wsse:Security xmlns:wsse="http://...wsssecurity...">
<wsse:UserNameToken xmlns:wsse="http://...wsssecurity...">
<Username xmlns="">myname</Username>
<Password xmlns="">mypass</Password>
</wsse:UserNameToken>
</wsse:Security>
Run Code Online (Sandbox Code Playgroud)
这会导致Web服务回复身份验证错误.
因此,我的问题是:
我有一个我导入的java类,不幸名为java.net_y.我的代码编译,但当我尝试运行它时,我得到:
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.net_y
Run Code Online (Sandbox Code Playgroud)
我已经阅读了其他关于尝试覆盖核心java类的线程,比如java.io .....这不是我正在做的....这个外部类我的名字很糟糕.
另一个线程提到反射......不确定是否需要反射.
我能做什么?