PHP SoapClient将数组转换为字符串

6
另一个关于SOAP的问题 - 我有一个大型多维数组,使用print_r可以正常输出(例如,您可以看到所有数据)。但当我使用时,问题就出现了


SOAPClient->__soapCall('Function', array('paramaters' => $feedUpload));

这实际上返回一个类似于这样的xml:(使用__getLastRequest)
<soap-env:envelope xmlns:ns1="http://www.property24.com/prosol/P24Feed" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:body>
        <ns1:uploadlistings>
            <ns1:feedupload>
                <ns1:version>1</ns1:version>
                <ns1:usertoken>
                    <ns1:token>3c7b39ea-c10b-451f-95bf-5118d84fb089</ns1:token>
                </ns1:usertoken>
                <ns1:command>UPLOAD</ns1:command>
                <ns1:compress>None</ns1:compress>
                <ns1:listings>
                    <ns1:listing>
                        <ns1:listingnumber>361000001</ns1:listingnumber>
                        <ns1:propertycategory>SR</ns1:propertycategory>
                        <ns1:listingdata>Array</ns1:listingdata>
                        <ns1:listingtype>A</ns1:listingtype>
                    </ns1:listing>
                </ns1:listings>    
            </ns1:feedupload>    
        </ns1:uploadlistings>
    </soap-env:body>
</soap-env:envelope>

您可以看到,对于ListingData,它返回“Array”。这是数组模式:

Array
(
    [parameters] => Array
        (
            [FeedUpload] => Array
                (
                    [Version] => 1
                    [UserToken] => Array
                        (
                            [Token] => 5ece25e7-77d9-4dbf-8b8f-e047759ab8f4
                        )

                    [Command] => UPLOAD
                    [Compress] => None
                    [Listings] => Array
                        (
                            [Listing] => Array
                                (
                                    [PropertyCategory] => SR
                                    [ListingNumber] => 361000001
                                    [ListingType] => A
                                    [ListingData] => Array
                                        (
                                            [MandateDetails] => Array
                                                (
                                                    [ListingNumber] => 361000001
                                                    [ListingType] => A
                                                    [MandateType] => O
                                                    [ClosedUserGroup] => C
                                                    [MarketCode] => A
                                                    [ListPrice] => 111000
                                                    [OccupationDate] => 
                                                    [OffMarketDate] => 
                                                    [OnMarketSince] => 
                                                    [ExpiryDate] => 2011-07-13T09:56:14Z
                                                    [ListDate] => 2011-07-13T09:51:14Z
                                                    [UpdateDate] => 2011-07-13T09:51:14Z
                                                    [VirtualTourUrl] => 
                                                    [ActualDirections] => 
                                                    [ShowHouseDirection] => 
                                                    [ViewComments] => 
                                                    [InternetComments] => Excellent stand situated on the flood plane with large riverine trees and great mountain views.   The estate is situated along the world renowned Blyde River and is 394 ha in extent with only 154 sites on 4000 square metres.  The estate has an array of plains game such as antelope, giraffe and wildebeest as well as hippo and crocodile.     The riverine flood plain provides great birding opportunities such as the Pels fishing owl. There is a restaurant and clubhouse that serves meals and cocktails and offers  
                                                )

                                            [PropertyDetails] => Array
                                                (
                                                    [PropertyCategory] => SR
                                                    [PropertyType] => SRX
                                                    [Status] => ACTV
                                                    [Province] => Eastern Cape
                                                    [Town] => Aberdeen
                                                    [Suburb] => Balvinie
                                                    [StreetName] => Test Street
                                                    [StreetNumber] => 5
                                                    [PostalCode] => 0123
                                                    [ErfSize] => 1200
                                                    [HouseSize] => 
                                                    [Age] => 
                                                    [OwnerType] => G
                                                    [VATRegistered] => false
                                                    [MunicipalRatesAndTaxes] => 0
                                                    [MunicipalImprovementsValue] => 0
                                                    [MunicipalLandValue] => 0
                                                    [MunicipalTotalValue] => 0
                                                    [StandNumber] => 
                                                    [StandNumberSubdivided] => 
                                                    [PortionNumber] => 
                                                    [OwnerShipType] => 
                                                )

                                            [ResidentialDetails] => Array
                                                (
                                                    [NoOfBathrooms] => 2
                                                    [BathroomDescription] => 
                                                    [NoOfBedrooms] => 6
                                                    [BedroomDescription] => 
                                                    [NoOfKitchens] => 2
                                                    [KitchenDescription] => 
                                                    [NoOfReceptionRooms] => 2
                                                    [ReceptionRoomDescription] => 
                                                    [NoOfStudies] => 1
                                                    [StudiesDescription] => 
                                                    [NoOfDomesticBathrooms] => 2
                                                    [NoOfDomesticRooms] => 0
                                                    [DomesticRoomsDescription] => 
                                                    [NoOfGarages] => 0
                                                    [GarageDescription] => 
                                                    [NoOfOutsideToilets] => 0
                                                    [Coverage] => 0
                                                    [Pool] => false
                                                    [PoolDescription] => 
                                                    [Flatlet] => 
                                                    [FlatletDescription] => 
                                                    [FlatletSize] => 
                                                    [EstablishedGarden] => 
                                                    [OutBuildingSize] => 
                                                    [NoOfCarports] => 0
                                                    [CarportsDescription] => 
                                                    [ParkingBayNumber] => 
                                                    [Parking] => 
                                                    [ParkingDescription] => 
                                                    [BusinessRights] => 
                                                    [HeightRestrictions] => 
                                                    [CommonFeatures] => 
                                                    [NumberOfShares] => 
                                                    [FacingOptions] => 
                                                    [KitchenOptions] => 
                                                    [FeatureOptions] => 
                                                    [SpecialFeatureOptions] => 
                                                    [WallOptions] => 
                                                    [WindowOptions] => 
                                                    [StyleOptions] => 
                                                    [TemperatureControlOptions] => 
                                                    [SecurityOptions] => 
                                                    [RoofOptions] => 
                                                    [RoomOptions] => 
                                                    [PoolOptions] => 
                                                    [BathroomOptions] => 
                                                )

                                            [AgentDetails] => Array
                                                (
                                                    [InternetAgentName] => Ricky Duckworth
                                                    [InternetAgentPhoneNumber] => 0157931534
                                                    [InternetAgentEmailAddress] => ricky@propertylogic.net
                                                    [InternetAgentSMSNumber] => 0796057834
                                                    [ListingAgentCode] => CN21
                                                    [ListingAgencyCode] => CWP021
                                                )
                                        )
                                )
                        )
                )
        )
)

你可以看到,这个数组的结构很好。就像SoapRequest已经深入到一个数组中并停止了一样。我还收到了通知。

Notice: Array to string conversion in /var/www/vhosts/propertylogic.net/httpdocs/soap_feed/property24/add_property.php on line 178

请问哪一行是SOAPCall的代码呢?

非常感谢!

编辑

[编辑]好的,基本上SOAP服务器要求该部分为原始xml格式,因此我不得不用字符串替换数组——这种做法有点愚蠢,但现在错误信息已经有意义了!(不能回答自己的问题)。


嗨,当你将字符串从数组转换后,它是什么样子的?谢谢。 - Kit
1
我没有从数组中转换它,只是制作了一个XML模板 - 所以例如 [ListingNumber] => 361000001 变成了 <ListingNumber>361000001</ListingNumber> 等等。 - rickyduck
1个回答

2

建议使用WSDL生成SOAP客户端并在其中定义复杂类型。这样,每个SOAP类型都会以自然的方式转换为PHP类型(在您的示例中,它将是对象数组)。

或者,您可以像已经做过的那样将数组替换为字符串,尽管这是一种不太优雅的方法 :)


嗨,WASD42,感谢您的回答。您有这方面的例子吗?正如我所说,它无论如何都是一个数组,但它物理上试图将数组变成字符串...或者我误解了您的意思?干杯 - rickyduck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接