Java 空SOAPAction Apache cxf

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

我正在使用ApacheCXF创建一个soap客户端。我使用一个网络钩子捕获数据,并在Http头中发现SOAPAction为空

SOAPAction:“

下面是代码

 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头。否则,服务器无法告诉您要调用哪个方法