我必须以以下格式发送 SOAP 请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:acc="...">
<soapenv:Header/>
<soapenv:Body>
<acc:CreateChildSubscriptionAccount>
<account>
...
</account>
<accountHierarchy>
...
</accountHierarchy>
</acc:CreateChildSubscriptionAccount>
</soapenv:Body>
</soapenv:Envelope>
令人困惑的一点是如何使 account 和 accountHierarchy 在请求正文中处于同一级别。
我试过这样,这样:
sub callservice{
...
$params =
SOAP::Data->name(
'accountHierarchy' => \SOAP::Data->value(
SOAP::Data->name( 'customerId' => '250001' ),
SOAP::Data->name( 'currencyCodeId' => \SOAP::Data->value(
SOAP::Data->name( 'domain' => 'ACC' ),
SOAP::Data->name( 'value' => 'EUR' )
) )
)
),
SOAP::Data->name(
'account' => \SOAP::Data->value(
SOAP::Data->name( 'customerId' => '250001' ),
SOAP::Data->name( 'languageCodeId' => \SOAP::Data->value(
SOAP::Data->name( 'domain' => 'ACC' ),
SOAP::Data->name( 'value' => 'en' )
) ),
SOAP::Data->name( 'lifeCycleProgression' => \SOAP::Data->value(
SOAP::Data->name( 'lifeCycleEntry' => \SOAP::Data->value(
SOAP::Data->name( 'lifeCycleSubState'=> 'STD' ),
SOAP::Data->name( 'lifeCycleReasonCode'=> 'ADD' ),
SOAP::Data->name( 'lifeCycleState'=> 'ACTIVE' )
) )
)),
SOAP::Data->name( 'paymentResponsibility' => 'true' ),
SOAP::Data->name( 'accountName' => 'TLA13134' ),
SOAP::Data->name( 'accountType' => 'CONVERGENT' )
)
);
$response = $service->call("createChildSubscriptionAccount", $params);
}
但它失败了,因为它只发送结构中定义的最后一个 SOAP::Data->valueaccountHierarchy
在这种情况下的结构中定义的最后一个 SOAP::Data->value。
有人会足够好心,让我知道我怎样才能在同一级别发送account
两者吗?accountHierarchy