php - php SoapClient参数序列同名
问题描述
我必须做一个肥皂调用,其中参数包含一系列复杂类型。
我没有找到参数的好格式。
这里是 xsd :
<xs:complexType name="createOspService">
<xs:sequence>
<xs:element name="OSP" type="tns:OSP" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ospServiceResponse">
</xs:complexType>
<xs:complexType name="OSP">
<xs:sequence>
<xs:element name="OSP_ID" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:element name="DATE_OSP" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
<xs:element name="CUSTOMER_ID" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:element name="RECIPIENT_ID" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:element name="ITEMS" type="tns:ITEMS" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ITEMS">
<xs:sequence>
<xs:element name="ITEM" type="tns:ITEM" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ITEM">
<xs:sequence>
<xs:element name="OSP_ITEM" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="QUANTITY" type="xs:double" minOccurs="1" maxOccurs="1"/>
<xs:element name="UNIT_PRICE" type="xs:double" minOccurs="1" maxOccurs="1"/>
<xs:element name="VAT_CODE" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
php调用:
$client = new \SoapClient('http://10.55.12.90:18180/NABSCamel/lgg/osp/ws?wsdl', $options);
try {
$osp = new \stdClass();
$osp->OSP = new \stdClass();
$osp->OSP->OSP_ID = $this->meetingRoomBookingI;
$osp->OSP->DATE_OSP = $date->format('c');
$osp->OSP->CUSTOMER_ID = $customer->Id();
$osp->OSP->RECIPIENT_ID = $recipientId;
$items = [];
$item = new \stdClass();
$item->OSP_ITEM = 'test 1';
$item->VAT_CODE = 21;
$item->QUANTITY = 2;
$item->UNIT_PRICE = 3;
$items[] = $item;
$item = new \stdClass();
$item->OSP_ITEM = 'test 2';
$item->VAT_CODE = 21;
$item->QUANTITY = 2;
$item->UNIT_PRICE = 3;
$items[] = $item;
$osp->OSP->ITEMS = $items;
$response = $client->createOspService($osp);
}
catch (\SoapFault $fault){
echo $fault->faultstring;
}
我收到了这个错误:
SOAP-ERROR: Encoding: object has no 'ITEM' property
我没有发现它在 ITEMS 参数附近缺少什么。
ITEMS 必须是一个带有 ITEM 的数组,但是我把这个词 ITEM 放在我的数组中?!
谢谢,菲尔
解决方案
如果您真的不知道如何构造请求并且不想怀疑,那么您应该明确地使用 WSDL 到 PHP 生成器来生成关联的类。您不必想知道如何构造请求,因为每个结构都有每个类。此外,响应处理也将更容易。
我建议您了解PackageGenerator项目,它是一个很好的生成器。
推荐阅读
- angular - Web浏览器上的离子角度测试PushNotifications
- javascript - 在 React.JS 中处理 API 调用的输入更改
- .net - RabbitMQ 异常“指定的端点均不可到达”
- c++ - 程序以获取所有输入而不显示任何内容结束
- vscode-extensions - 如何仅在 vscode 扩展的资源管理器上下文菜单中显示命令?
- r - 如何将函数结果添加到列表中
- python - 如何循环遍历 csv 文件并根据列表中的值创建列表?
- arrays - Arduino - Byte Aray 未更新
- mysql - 如何从数据库中区分出现次数多的元素
- android - 如何在 Android Studio 中单击时更改自定义按钮属性