Я разрабатываю клиентское приложение 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"?>
из запроса, поскольку это также может быть проблемой.