Проблемы построения Java SOAP 1.5 XML - PullRequest
1 голос
/ 18 октября 2019

Я разрабатываю клиентское приложение Java SOAP 1.5, которое взаимодействует с конечной точкой сервера SOAP.

Однако созданный XML-запрос не тот, который я ожидаю, и он возвращает ответ о сбое с сервера.

Вот часть моего кода, который создает конверт XML:

MessageFactory messageFactory = MessageFactory.newInstance();
SOAPFactory soapFactory       = SOAPFactory.newInstance();

SOAPMessage soapMessage       = messageFactory.createMessage();

SOAPPart soapPart             = soapMessage.getSOAPPart();

// SOAP Envelope
SOAPEnvelope envelope         = soapPart.getEnvelope();
SOAPHeader header             = soapMessage.getSOAPHeader(); 

envelope.addNamespaceDeclaration("SOAP-ENV", "http://www.w3.org/2003/05/soap-envelope");
envelope.addNamespaceDeclaration("wsa", "http://www.w3.org/2005/08/addressing");
envelope.addNamespaceDeclaration("cs", "urn://Ocpp/Cp/2012/06/");

Теперь сравните это с фактически отправляемым запросом:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:cs="urn://Ocpp/Cp/2012/06/"
    xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <SOAP-ENV:Header>
        <cs:chargeBoxIdentity>Test</cs:chargeBoxIdentity>
        <wsa:Action>/ChangeConfiguration</wsa:Action>
        <wsa:MessageID>Fake OCPP571322528896</wsa:MessageID>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <cs:changeConfigurationRequest>
            <cs:key>LaMa_ConnectionRate</cs:key>
            <cs:value>5120</cs:value>
        </cs:changeConfigurationRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Посмотрите, как xmlns:SOAP-ENV на самом деле отличается от того, что предполагалось. Я не знаю, почему это так. Это может быть частью проблемы. Кроме того, возможно ли убрать объявление <?xml version="1.0" encoding="UTF-8" standalone="no"?> из запроса, поскольку это также может быть проблемой.

...