Java 空SOAPAction Apache cxf
我正在使用ApacheCXF创建一个soap客户端。我使用一个网络钩子捕获数据,并在Http头中发现SOAPAction为空 SOAPAction:“ 下面是代码Java 空SOAPAction Apache cxf,java,cxf,jax-ws,soap-client,cxf-client,Java,Cxf,Jax Ws,Soap Client,Cxf Client,我正在使用ApacheCXF创建一个soap客户端。我使用一个网络钩子捕获数据,并在Http头中发现SOAPAction为空 SOAPAction:“ 下面是代码 URL wsdlurl=SOAPWebServiceTransport.class.getClassLoader(). getResource("my.wsdl"); OnlinePort service= new OnlinePortService(wsdlurl).getOnlinePortPort(); Cli
URL wsdlurl=SOAPWebServiceTransport.class.getClassLoader().
getResource("my.wsdl");
OnlinePort service= new OnlinePortService(wsdlurl).getOnlinePortPort();
Client proxy = ClientProxy.getClient(service);
// Provides WS-Security
WSS4JOutInterceptor wss4jOut = new WSS4JOutInterceptor();
wss4jOut.setProperty("action", "UsernameToken");
wss4jOut.setProperty("user", userName);
wss4jOut.setProperty("passwordType", "PasswordText");
wss4jOut.setProperty("password", password);
wss4jOut.setProperty(WSHandlerConstants.ADD_UT_ELEMENTS,
WSConstants.NONCE_LN + " " + WSConstants.CREATED_LN);
wss4jOut.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, ServerPasswordCallback.class.getName());
proxy.getEndpoint().getOutInterceptors().add(wss4jOut);
setConduitProperties((HTTPConduit) proxy.getConduit(),url);
在setConductProperties中,我只是设置一些http属性。
在调查这个问题时,我找到了一个解决办法
Map<String, List<String>> headers = new HashMap<String, List<String>>();
headers.put("SOAPAction", Arrays.asList("myPrefix:mySoapMethod"));
proxy.getRequestContext().put(Message.PROTOCOL_HEADERS, headers);
Map headers=newhashmap();
headers.put(“SOAPAction”,Arrays.asList(“myPrefix:mySoapMethod”);
proxy.getRequestContext().put(Message.PROTOCOL_头,头);
但问题是,如果我有多个方法,那么在Http头中,它会将所有的方法放在一起
SOAPAction:“我的前缀:mySoapMethod,我的前缀:mySoapMethod2”
是否有更好的解决方案来处理此问题?我建议为每个请求设置SOAPAction头。否则,服务器无法告诉您要调用哪个方法。我建议为每个请求设置SOAPAction头。否则,服务器无法告诉您要调用哪个方法