尝试从SOAP服务访问Delphi Array时获取Undefined属性

时间:2016-11-23 20:19:28

标签: php arrays web-services delphi soap

正如标题所暗示的那样。我在我的工作中继承了一个基于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页面。但是,我仍然得到同样的错误。我应该在哪里定义属性呢?这让我疯了......

enter image description here

0 个答案:

没有答案