Проблемы с PHP и SOAP: форматирование запроса - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь создать запрос конверта SOAP в PHP с помощью входной переменной и учетных данных для входа. Я очень новичок в этом и борюсь совсем немного. Веб-служба, которую я использую, принимает VIN-код транспортного средства и отправляет обратно информацию об этом конкретном транспортном средстве. Введите: 1ZVHT88S375260112 и в ответ вы получите подробную информацию о Ford Mustang 2007 года, к которому принадлежит этот VIN.

Я создал простую строку ввода и форму для ввода VIN. Это подача на страницу с запросом PHP Soap. Я пропустил свои учетные данные для входа (имя пользователя и пароль / секрет), но создал этот код на основе других записей переполнения стека. Несмотря на изучение множества различных запросов 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
]);

?>

1 Ответ

0 голосов
/ 12 сентября 2018

Использование встроенного класса SoapClient должно быть проще, чем манипулирование XML и настройка запроса cURL.

Начните с создания объекта SoapClient из предоставленного WSDL.

$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» запроса как значения «number» и «secret».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...