3

我有以下代码

    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 声明。

我在这里做错了什么?有人请帮助我。

4

1 回答 1

2

ServiceClient#sendReceive(OMElement)不期望 aSOAPEnvelope作为输入,而是 SOAP 主体的内容。而不是通过它envelope,你应该通过它requestElement

于 2015-08-25T07:21:54.987 回答