PHP - SOAP请求 - 将xml嵌套为param?

时间:2018-02-21 16:11:29

标签: php xml soap request wsdl

我需要使XML SOAP请求的结构如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.fines.pl/api/contract">
    <SOAP-ENV:Body>
        <ns1:newApplicationRequest>
            <user_login>XYZ</user_login>
            <user_password>XYZ</user_password>
            <contract>
<?xml version="1.0" encoding="UTF-8"?>
<sof:Contract xmlns:s="http://www.fines.pl/simple" xmlns:sof="http://www.fines.pl/sof" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.fines.pl/sof model.xsd ">
    <product>
        <prefix>MOP</prefix>
    </product>
    <participants>
        <customers>
            <main_borrower>
                <personal_data>
                    <pesel>85050949761</pesel>
                    <firstname>Anna</firstname>
                    <lastname>Test</lastname>
                    <firstname_father></firstname_father>
                    <firstname_mother></firstname_mother>
                    <secondname />
                    <sex>female</sex>
                </personal_data>
                <contact_data>
                    <addresses>
                        <address>
                            <type>registered</type>
                            <street_name>Grunwaldzka</street_name>
                            <block_number>11</block_number>
                            <flat_number>5</flat_number>
                            <postal_code>80-100</postal_code>
                            <city>Gdańsk</city>
                        </address>
                    </addresses>
                    <phones_mobile>
                        <phone_mobile>
                            <type>personal</type>
                            <number>602200300</number>
                        </phone_mobile>
                    </phones_mobile>
                </contact_data>
                <incomes>
                    <income>
                        <type>employment</type>
                        <main_income>true</main_income>
                        <fixed_term_contract>false</fixed_term_contract>
                        <paychecks>
                            <paycheck>
                                <amount_net>
                                    <amount>1444.00</amount>
                                    <currency>PLN</currency>
                                </amount_net>
                                <type>base</type>
                            </paycheck>
                        </paychecks>
                    </income>
                </incomes>
                <household_pointer>/households.0</household_pointer>
            </main_borrower>
        </customers>
    </participants>
</sof:Contract></contract></ns1:newApplicationRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>

我已将$params变量设置为包含user_loginuser_password元素及其各自的值,但我不知道如何设置此contract包含所需内容的参数。

$contract变量提供XML代码(我认为可能是一种解决方法)会导致Fatal error: Uncaught SoapFault exception: [xml_structure] String could not be parsed as XML错误。

很高兴解释如何做到这一点。

1 个答案:

答案 0 :(得分:4)

您已声明<?xml?>两次,一次在第一行,第二次在八次。这是我在xml方面看到的唯一错误。