2015-08-24 10 views
3

Я следующий кодjavax.xml.stream.XMLStreamException при использовании Axiom для отправки SOAP

final String METHOD="test"; 
    final String PARAM1_VAL="Hello"; 
    final String TARGET_EPR="http://bhanuka-TECRA-M11:8280/services/SoapToRestProxy"; 

    SOAPFactory factory = OMAbstractFactory.getSOAP11Factory(); 
    OMNamespace samplesNamespace = factory.createOMNamespace("http://services.samples/xsd", "m"); 
    SOAPEnvelope envelope = factory.getDefaultEnvelope(); 


    OMElement requestElement = factory.createOMElement("request", samplesNamespace); 
    OMElement methodElement = factory.createOMElement("method",samplesNamespace); 
    OMElement param1 = factory.createOMElement("val",samplesNamespace); 

    param1.setText(PARAM1_VAL); 
    methodElement.setText(METHOD); 
    requestElement.addChild(methodElement); 
    requestElement.addChild(param1); 
    envelope.getBody().addChild(requestElement); 

    try { 
     ServiceClient serviceClient = new ServiceClient(); 
     Options options = new Options(); 
     options.setTo(new EndpointReference(TARGET_EPR)); 
     serviceClient.setOptions(options); 

     OMElement response = serviceClient.sendReceive(envelope); 
     System.out.println(response); 
    } catch (AxisFault axisFault) { 
     axisFault.printStackTrace(); 
    } 

Что я делаю делает SOAP конверт и отправить его к определенной конечной точке. но в методе sendReceive, он бросает

javax.xml.stream.XMLStreamException: не может выводить декларацию XML, после другого выхода уже сделано.

Что я делаю Неправильно здесь? кто-нибудь, пожалуйста, помогите мне.

ответ

2

ServiceClient#sendReceive(OMElement) не принимает SOAPEnvelope в качестве входных данных, кроме содержимого тела SOAP. Вместо того, чтобы передавать его envelope, вы должны передать его requestElement.

+0

Не могли бы вы рассказать мне, как получить запрос от Evelope :) –

+0

Извините, я не понимаю ваш вопрос. У вас есть переменная с именем 'requestElement' в вашем коде. Просто передайте это 'sendReceive'. –

+0

Большое спасибо: D –