2015-06-24 4 views
1

Я создаю клиента мыла с помощью Apache cxf.I используется сетевой крючок сбора данных и выяснить, в заголовке SOAPAction Http пустПустой SOAPAction Apache CXF

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

В setConduitProperties я просто установить некоторые свойства 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); 

Но проблема в том, что если у меня есть более чем один метод, то в заголовок HTTP ввода его полностью метод

SOAPAction: «myPrefix: mySoapMethod, myPrefix: mySoapMethod2 "

Есть ли лучшее решение для этого?

ответ

0

Я бы предложил установить заголовок SOAPAction для каждого запроса. В противном случае сервер не сможет указать, какой метод вы хотите вызывать.