Not getting the required SOAP request XML

后端 未结 2 1886
梦如初夏
梦如初夏 2021-01-27 01:05

I am working on a Simple php Client that uses OCPP (Open Charge Point Protocol). I have created the client and This is the request XML that goes from my code.

&l         


        
相关标签:
2条回答
  • 2021-01-27 01:10

    Provided the prefixes match up with the xmlns declarations on the Envelope element, then it is valid XML and therefore valid SOAP so you should be fine. However, XML is case sensitive and I notice that your code has and idTag element in inside the Body element rather than the IdTag element in the output you're expecting.

    0 讨论(0)
  • 2021-01-27 01:22

    According to OCPP specs, your current output is closer to what's correct but still has many problems.

    • The full OCPP URN you're using ends with .../2015/10/ which is for OCPP 1.6 but in your code, you're using WSDL for OCPP 1.5 which requires .../2012/06/ for URN.
    • Per OCPP spec, camel-case idTag is correct field name for Authorize message.
    • You need the root tag <authorizeRequest /> in the SOAP body.
    • You need WSA (addressing) namespace xmlns:wsa="http://www.w3.org/2005/08/addressing" for addressing fields (MessageId, From, To, ReplyTo, RelatesTo and Action in the SOAP header.
    • chargeBoxIdentity belongs to OCPP URN namespace.
    • MessageId should be MessageID and it should not have mustUnderstand attribute.
    • Action, To, ReplyTo and chargeBoxIdentity should have mustUnderstand="true" attribute. Others should not.
    • As of OCPP 1.6 ReplyTo is required and should always have the value http://www.w3.org/2005/08/addressing/anonymous
    • RelatesTo is required for responses only. This is a request.

    Final version of the expected output should be like below:

    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
            xmlns:cs="urn://Ocpp/Cs/2012/06/"
            xmlns:wsa="http://www.w3.org/2005/08/addressing">
        <soap:Header>
            <cs:chargeBoxIdentity soap:mustUnderstand="true">XXX01</cs:chargeBoxIdentity>
            <wsa:Action soap:mustUnderstand="true">/Authorize</wsa:Action>
            <wsa:MessageID>123</wsa:MessageID>
            <wsa:From><wsa:Address>http://from-endpoint</wsa:Address></wsa:From>
            <wsa:ReplyTo soap:mustUnderstand="true"><wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address></wsa:ReplyTo>
            <wsa:To soap:mustUnderstand="true"><wsa:Address>http://to-endpoint</wsa:Address></wsa:To>
        </soap:Header>
        <soap:Body>
            <cs:authorizeRequest>
                <cs:idTag>1234567</cs:idTag>
            </cs:authorizeRequest>
        </soap:Body>
    </soap:Envelope>
    

    Note: I've set a bit meaningful namespace prefixes, you can set anything you like.

    0 讨论(0)
提交回复
热议问题