Как следует из названия. Я унаследовал веб-приложение на основе SOAP на своей работе и хочу настроить некоторые уловки для разбора, чтобы я мог видеть, что оно делает (в основном это генератор SQL-запросов)
Вот класс / объект, который мне возвращают при вызове определенной функции через PHP через мой сервис SOAP.
ProductAvailabilityResult = Class(TRemotable)
private
FProductAvailableList : ProductAvailabilityList;
FResultArray : TArray<string>;
published
//@PROPERTY@ProductAvailableList:ProductAvailabilityList
//@PROPERTYDESC@List of products and their availibility
property ProductAvailableList : ProductAvailabilityList read FProductAvailableList write FProductAvailableList;
property ResultArray : TArray<string> read FResultArray write FResultArray;
End;
ProductAvailableList это массив объекта, который сам объект содержит несколько свойств. Этот конкретный массив работает.
Однако мой массив ResultArray не работает и продолжает бросать меня Неопределенное свойство: stdClass :: $ ResultArray.
Вот как я присваиваю значения массиву.
SetLength(ArrayTest,conditionList.Count);
for I := 0 to conditionlist.Count - 1 do
begin
ArrayTest[I] := conditionList[I];
end;
aProductAvailabilityResult.ResultArray := ArrayTest;
conditionList это TStringList, который я выгружаю в свой массив, который затем пытаюсь отобразить первый элемент в файле PHP, который я использую для вызова функции. Первый эхо — это мой массив, который возвращает мою ошибку. Второй цикл for выполняется в другом массиве, который работает нормально.
echo $result->ResultArray[0];
foreach (($result->ProductAvailableList) as $aProd)
{
echo "PRODUCTID: $aProd->Productid".'<br>';
echo "-ProductCode: $aProd->ProductCode".'<br>';
echo "-Quantity Available: $aProd->Available".'<br>';
echo "-Retail Price: $$aProd->RetailPrice".'<br>';
echo "-SKU detail:".'<br>';
// For each product, we list the SKU and its availability
foreach (($aProd->SkuAvailableList) as $aSku)
{
echo "--SKUID: $aSku->Skuid / Quantity Available: $aSku->Available".'<br>';
}
РЕДАКТИРОВАТЬ: Только что нашел дополнительную информацию. Глядя на определения WSDL на клиенте, мой массив не появляется там. Как вы можете видеть на скриншоте, мне нужен мой массив, чтобы иметь к нему доступ (там больше, чем в моем классе, потому что я отредактировал его, чтобы сократить этот пост). Почему WSDL не забирает недвижимость?
РЕДАКТИРОВАТЬ 2: ниже заполнено поле, которое я добавил, кажется, он просто не обновлял страницу WSDL должным образом. Тем не менее, я все еще получаю ту же ошибку. Где я должен определить собственность тогда? Это сводит меня с ума …
Задача ещё не решена.
Других решений пока нет …