我正在尝试使用输入变量和登录凭证在PHP中创建SOAP信封请求。我对此很陌生,并且挣扎了很多。我正在使用的Web服务将车辆的VIN作为输入,并发回有关该特定车辆的详细信息。输入:1ZVHT88S375260112
,作为回报,您将收到有关VIN所属的2007年福特野马的详细信息。
我创建了一个简单的输入栏和表格来输入VIN。这将进入包含PHP Soap Request的页面。我已经省略了登录凭据(用户名和密码/机密),但是根据其他堆栈溢出条目创建了此代码。尽管研究了许多不同的PHP SOAP请求,但仍无法正常工作。任何帮助将不胜感激。下面是我的代码。
PHP
<?php
$client = new SoapClient('http://services.chromedata.com/Description/7b?wsdl');
$account = ['number'=>"12345", 'secret'=>"12345", 'country'=>"US", 'language'=>"en"];
$VIN = "SCFBB03B86GC01407";
$result = $client->describeVehicle([
'accountInfo' => $account,
'vin' => $VIN
]);
?>
答案 0 :(得分:1)
使用内置的SoapClient
类比处理XML和设置cURL请求要容易。
首先从提供的WSDL创建SoapClient
对象。
$client = new SoapClient('http://services.chromedata.com/Description/7b?wsdl');
您可以列出所有可用功能。
$functions = $client->__getFunctions();
var_dump($functions);
这将向您显示
array (size=9) 0 => string 'VersionInfo getVersionInfo(BaseRequest $request)' (length=48) 1 => string 'ModelYears getModelYears(BaseRequest $request)' (length=46) 2 => string 'Divisions getDivisions(DivisionsRequest $request)' (length=49) 3 => string 'Subdivisions getSubdivisions(SubdivisionsRequest $request)' (length=58) 4 => string 'Models getModels(ModelsRequest $request)' (length=40) 5 => string 'Styles getStyles(StylesRequest $request)' (length=40) 6 => string 'VehicleDescription describeVehicle(VehicleDescriptionRequest $request)' (length=70) 7 => string 'CategoryDefinitions getCategoryDefinitions(BaseRequest $request)' (length=64) 8 => string 'TechnicalSpecificationDefinitions getTechnicalSpecificationDefinitions(BaseRequest $request)' (length=92)
看起来像您想要的那个叫describeVehicle
。您可以将其作为$client
对象上的方法来调用。它需要一个VehicleDescriptionRequest
对象,但是您应该能够在数组中传递所需的数据。
$account = ['number'=>"", 'secret'=>"", 'country'=>"US", 'language'=>"en", 'behalfOf'=>"?"];
$description = $client->describeVehicle([
'accountInfo' => $account,
'vin' => $VIN
]);
就我自己而言,无需帐户即可获得。我假设您的凭据应作为“数字”和“秘密”的值进入请求的“ accountInfo”部分。