使用带有GUID和命名空间的PHP读取Web服务

时间:2012-10-23 17:23:27

标签: php soap webserver

我是Web Services的新手,并且正在努力使用PHP访问/读取XML数据(我的网站将使用PHP的数据)。

WSDL网址:http://services.mywheels.co.za/BWAVehicleStockService.svc?wsdl

我需要访问并阅读车辆库存信息,但无法访问任何内容。 阵列车辆存储在http://services.mywheels.co.za/BWAVehicleStockService.svc?xsd=xsd2下。

我正在使用此代码,但它不会提供我的任何数据。我还有一个需要传递的GUID,但不知道如何将它添加到标题中。

            <?PHP
            define('NEWLINE', "<br />\n");

            // SOAP client

            $wsdl = 'http://services.mywheels.co.za/BWAVehicleStockService.svc?wsdl';
            $soapClient = new SoapClient($wsdl, array('cache_wsdl' => 0));

            // SOAP call


            $parameters->ArrayOfVehicle->Vehicle;

            try
            {
                $result = $soapClient->GetVehicleStock($parameters);
            }
            catch (SoapFault $fault)
            {
                echo "Fault code: {$fault->faultcode}" . NEWLINE;
                echo "Fault string: {$fault->faultstring}" . NEWLINE;
                if ($soapClient != null)
                {
                    $soapClient = null;
                }
                exit();
            }
            $soapClient = null;

            echo "<pre>\n";
            print_r($result);
            echo "</pre>\n";

            echo "Return value: {$result->GetDataResult}" . NEWLINE;

            ?>

如果有人可以帮助或指出我正确的方向,这将是伟大的。

由于

1 个答案:

答案 0 :(得分:1)

您可以使用__setSoapHeaders()添加标题:

$h = new SoapHeader('http://tempuri.org/', 'Guid', '123');
$soapClient->__setSoapHeaders($h);

我必须阅读WSDL本身以找出我应该使用的命名空间;在这种情况下,他们将Guid称为tns:Guid,您可以从顶部读取用于表达的URI,因此http://tempuri.org