Всеки може да отстъпи, само смелите продължават.

SOAP, WSDL с PHP5

Автор bliznaka | 08.02.2009 | Категория Направи си сам

Наскоро ми се наложи да преработя един импортер на продукти, тъй като клиентите ползват Java, а импортерът ми беше на PHP. За да комуникират помежду си трябваше някакво междинно ниво… SOAP беше това от което се нуждаех.
Паралелно ще давам PHP код и обяснения:

Тъй като клиентите имаха basic authentication трябваше да задам следните параметри, които преди това запазвам в масив:

// Basic Authentication, exceptions and tracing settings
$params = array(
“login” => ‘потребителско-име’,
“password” => ‘потребителска-парола’,
“trace” => 1,
“exceptions” => 1
);

След това правим връзка към SOAP услугата на клиента:

// WSDL връзка за достигане до XML данните
$client = new SoapClient(“http://example.com:12345/?wsdl”, $params);

Задаваме namespace-а на услугата като нов хедър:

$namespace = ‘http://example.com/’;
$name_header = new SoapHeader($namespace, ‘name’, ‘ExampleBinding’);

Запазваме всички хедъри (в случая е само един) в масив, който подаваме като параметър на метод за сетване на хедъри:

$headers = array($name_header);
$client->__setSoapHeaders($headers);

След това създаваме масив, съдържащ всички параметри и стойностите им, които очаква функцията на клиента. В случая клиентската функция getData очаква първи параметър ids и втори параметър type:

$params1 = array(‘ids’ => $stock_id, ‘type’ => ‘csv’);

След това благодарение на WSDL може директно да извикаме клиентската функция като метод на нашия обект $client, $client->getData($params1), като не забравяме да подадем масива с очакваните параметри:

try {
$data = $client->getData($params1);
if (!empty($data->details)) {

// следва логика за обработка на данните

}
} catch (SoapFault $exception) {
echo $exception;
}
// WSDL.

Ако има някакъв exception, то той бива показан.

Това е PHP клиентската част на SOAP (WSDL) услугата. В следващата статия ще покажа как да създадете сървърна услуга, но отново на PHP, което значи че клиентската част може да е на JAVA или друг език, поддържащ SOAP (WSDL).