正如标题所暗示的那样。我在我的工作中继承了一个基于SOAP的Web应用程序,我想设置一些解析噱头,这样我就可以看到它正在做什么(基本上它是一个SQL请求生成器)
这是我通过SOAP服务通过PHP调用某个函数时返回的类/对象。
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文件中的第一项。第一个echo是我的数组,它返回我的错误。第二个是在另一个数组中完成的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定义,我的Array不会出现在那里。正如你在屏幕截图中看到的那样,我需要我的数组才能访问它(除了我的课程,因为我编辑了这篇文章以缩短这篇文章)。为什么WSDL没有拿起财产?
EDIT2:现在填充了我添加的字段,似乎只是没有正确刷新WSDL页面。但是,我仍然得到同样的错误。我应该在哪里定义属性呢?这让我疯了......