空SOAPAction Apache cxf

时间:2015-06-24 17:15:27

标签: java cxf jax-ws soap-client cxf-client

我正在使用apache cxf创建一个soap客户端。我使用网络钩子捕获数据并在Http头中查找SOAPAction是空的

  

SOAPAction:“”

以下是代码

res.json(post);

在setConduitProperties中,我只是设置了一些http属性。 在调查此问题时,我找到了一项工作

 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);

但问题是,如果我有多个方法,那么在Http头中放入所有方法

  

SOAPAction:“myPrefix:mySoapMethod,myPrefix:mySoapMethod2”

有没有更好的解决方案来解决这个问题?

1 个答案:

答案 0 :(得分:0)

我建议为每个请求设置SOAPAction标头。否则,服务器无法确定您要调用哪个方法。