Php SoapClient Soap-Env 有 'item' 和 'key' 个节点
Php SoapClient Soap-Env has 'item' and 'key' nodes
我在使用 php SoapClient 调用合作伙伴 soap 服务时遇到问题。他的wsdl是https://motrada.net/accounts/test.wsdl
当我将以下数据发送到 php SoapClient
array (
'Expert_Status' =>
array (
'ChassisNo' => '9998886NZ12345678',
'MotradaIntVehicleNo' => '757169',
'MotradaSalesId' => '209448',
'MotradaWorkflowStatus' => '5-offer_preperation',
'GrossPriceInclVATAutoi' => '20000',
'DamageAmountInclVAT' => '1000',
'MileageExpertise' => '234234',
'Timestamp' => '2016-05-23T10:14:58+02:00',
),
)
php-SoapClient 发送以下请求:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<Expert-Request>
<item>
<key>Expert_Status</key>
<value>
<item>
<key>ChassisNo</key>
<value>9998886NZ12345678</value>
</item>
<item>
<key>MotradaIntVehicleNo</key>
<value>757169</value>
</item>
...
</value>
</item>
</Expert-Request>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
请求应如下所示
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<Expert_Status>
<ChassisNo>9998886NZ12345678</ChassisNo>
<MotradaIntVehicleNo>757169</MotradaIntVehicleNo>
...
我发送到 php SoapClient 的选项是:
array (
'encoding' => 'UTF-8',
'verifypeer' => false,
'verifyhost' => false,
'soap_version' => 'SOAP_1_1',
'trace' => true,
'exceptions' => true,
'connection_timeout' => 10,
'login' => 'MOTR_ALE',
'password' => 'XXXXXXXX',
)
谁能帮我找出问题所在?
仔细查看给定的 WSDL 文件,其中写着:
<wsdl:message name="xmln.Bestand-Request">
<wsdl:documentation/>
<wsdl:part xmlns="" name="Bestand-Request" element="Bestand-Request"/>
</wsdl:message>
<wsdl:message name="xmln.Bestand-Response">
<wsdl:documentation/>
<wsdl:part xmlns="" name="Bestand-Response" element="Bestand-Response"/>
</wsdl:message>
<wsdl:message name="xmln.Expert-Request">
<wsdl:part name="Expert-Request" element="Expert-Request"/>
</wsdl:message>
<wsdl:message name="xmln.Expert-Response">
<wsdl:part name="Expert-Response" element="Expert-Response"/>
</wsdl:message>
你看出区别了吗?在前两部分定义中,有一个空属性 "xmlns",其他部分定义中缺少该属性。
通过此属性扩展这些部分,您应该可以开始了;)
嗯,你只需要从服务器发送答案作为对象
return json_decode(json_encode([
'response' => [
'status' => 0,
'result' => [
'error' => [
'code' => 1111,
'message' => 'testme'
]
],
]
]));
我在使用 php SoapClient 调用合作伙伴 soap 服务时遇到问题。他的wsdl是https://motrada.net/accounts/test.wsdl
当我将以下数据发送到 php SoapClient
array (
'Expert_Status' =>
array (
'ChassisNo' => '9998886NZ12345678',
'MotradaIntVehicleNo' => '757169',
'MotradaSalesId' => '209448',
'MotradaWorkflowStatus' => '5-offer_preperation',
'GrossPriceInclVATAutoi' => '20000',
'DamageAmountInclVAT' => '1000',
'MileageExpertise' => '234234',
'Timestamp' => '2016-05-23T10:14:58+02:00',
),
)
php-SoapClient 发送以下请求:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<Expert-Request>
<item>
<key>Expert_Status</key>
<value>
<item>
<key>ChassisNo</key>
<value>9998886NZ12345678</value>
</item>
<item>
<key>MotradaIntVehicleNo</key>
<value>757169</value>
</item>
...
</value>
</item>
</Expert-Request>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
请求应如下所示
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<Expert_Status>
<ChassisNo>9998886NZ12345678</ChassisNo>
<MotradaIntVehicleNo>757169</MotradaIntVehicleNo>
...
我发送到 php SoapClient 的选项是:
array (
'encoding' => 'UTF-8',
'verifypeer' => false,
'verifyhost' => false,
'soap_version' => 'SOAP_1_1',
'trace' => true,
'exceptions' => true,
'connection_timeout' => 10,
'login' => 'MOTR_ALE',
'password' => 'XXXXXXXX',
)
谁能帮我找出问题所在?
仔细查看给定的 WSDL 文件,其中写着:
<wsdl:message name="xmln.Bestand-Request">
<wsdl:documentation/>
<wsdl:part xmlns="" name="Bestand-Request" element="Bestand-Request"/>
</wsdl:message>
<wsdl:message name="xmln.Bestand-Response">
<wsdl:documentation/>
<wsdl:part xmlns="" name="Bestand-Response" element="Bestand-Response"/>
</wsdl:message>
<wsdl:message name="xmln.Expert-Request">
<wsdl:part name="Expert-Request" element="Expert-Request"/>
</wsdl:message>
<wsdl:message name="xmln.Expert-Response">
<wsdl:part name="Expert-Response" element="Expert-Response"/>
</wsdl:message>
你看出区别了吗?在前两部分定义中,有一个空属性 "xmlns",其他部分定义中缺少该属性。 通过此属性扩展这些部分,您应该可以开始了;)
嗯,你只需要从服务器发送答案作为对象
return json_decode(json_encode([
'response' => [
'status' => 0,
'result' => [
'error' => [
'code' => 1111,
'message' => 'testme'
]
],
]
]));