Soap сервис при помощи NuSoap

server.php
<?php
require_once('/var/www/libs/soap/nusoap.php');

$server = new nusoap_server;

$server->soap_defencoding = 'utf-8';
$server->decode_utf8      = false;

$server->configureWSDL('server', 'urn:server');

$server->wsdl->schemaTargetNamespace = 'urn:server';

$namesCol = array(
    'orderNumber' => 'Номер заказа',
    'id' => 'ID',
    'execNumber' => 'Номер исполнителя',
    'deliveryDate' => 'Дата доставки',
    'deliveryStart' => 'Начало интервала доставки',
    'deliveryEnd' => 'Конец интервала доставки',
    'region' => 'Регион',
    'city' => 'Город',
    'index' => 'Индекс',
    'street' => 'Улица',
    'house' => 'Дом',
    'apartment' => 'Квартира',
    'fullname' => 'ФИО',
    'phone' => 'Телефон',
    'email' => 'Эл адрес',
    'comment' => 'Комментарий',
    'IDSamovyvoz' => 'ИДСамовывоз',
    'prepayment' => 'Предоплата',
    'shippingAmount' => 'Сумма доставки',
    'harcode' => 'Штрих код',
    'amount' => 'Количество',
    'summa' => 'Сумма',
    'nomenclature' => 'Номенклатура',
    'character' => 'Характеристика',
    'status_dt' => 'Дата установки статуса',
    'status' => 'Статус',
    'uploaded' => 'Отправлен',
    'deliveryNumber' => 'Номер доставки',
    'order' => 'Заявка',
    'implemented' => 'Реализован',
    'map' => 'Карта',
    'previousPoints' => 'Снятые баллы',
    'stock' => 'Склад',
    'statusID' => 'Статус ID',
    'paymentAmount' => 'Сумма оплаты',
    'fitting' => 'Примерка',
    'customerName' => 'Имя заказчика',
    'customerFamily' => 'Фамилия заказчика',
    'customerMiddleName' => 'Отчество заказчика',
    'order' => 'Заказ',
    'areaSD' => 'Регион для СД',
    'implementation' => 'Реализация',
    'cityCodePVZ' => 'Код города ПВЗ',
    'paid' => 'Оплачено',
    'promocode' => 'Промокод',
    'transportCompany' => 'Транспортная компания',
    'areaCode' => 'Код региона',
    'cityCode' => 'Код города',
    'postfix' => 'Постфикс'
);

$complexType = array();
foreach ($namesCol as $key => $value) {
  $complexType[$key] = array('name'=> $key, 'type'=> 'xsd:string');
}

//first simple function
$server->register('one', array('one' => 'xsd:string'), //parameter
    array('return' => 'xsd:string'), //output
    'urn:server', //namespace
    'urn:server#helloServer', //soapaction
    'rpc', // style
    'encoded', // use
    'One param');  //description

function one($param)
{
  return '['.$param.']';
}

$server->wsdl->addComplexType(
    'complexRequest', 'complexType', 'struct', 'all', '',
    $complexType
);

$server->register('get', array('data' => 'tns:complexRequest'), //parameters
    array('return' => 'tns:complexRequest'), //output
    'urn:server', //namespace
    'urn:server#getServer', //soapaction
    'rpc', // style
    'encoded', // use
    'description');  //description

function get($param){
  global $namesCol;
  $return = array();
  foreach ($param as $key => $value) {
    $return[$key] = $namesCol[$key].':'.$value;
  }

  return $return;
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA);


client.php
<?php
header("Content-Type: text/html; charset=utf-8");
header('Cache-Control: no-store, no-cache');
header('Expires: '.date('r'));

ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);

$client = new SoapClient("/soap/server.php?wsdl",
    array(
    "trace" => 1,
    "exceptions" => 1,
    "cache_wsdl" => 0,
    "encoding" => "UTF-8",
    'soap_version' => SOAP_1_1,
    'style' => SOAP_DOCUMENT,
    'use' => SOAP_LITERAL,
    ));

$namesCol = array(
    'orderNumber' => 'Номер заказа',
    'id' => 'ID',
    'execNumber' => 'Номер исполнителя',
    'deliveryDate' => 'Дата доставки',
    'deliveryStart' => 'Начало интервала доставки',
    'deliveryEnd' => 'Конец интервала доставки',
    'region' => 'Регион',
    'city' => 'Город',
    'index' => 'Индекс',
    'street' => 'Улица',
    'house' => 'Дом',
    'apartment' => 'Квартира',
    'fullname' => 'ФИО',
    'phone' => 'Телефон',
    'email' => 'Эл адрес',
    'comment' => 'Комментарий',
    'IDSamovyvoz' => 'ИДСамовывоз',
    'prepayment' => 'Предоплата',
    'shippingAmount' => 'Сумма доставки',
    'harcode' => 'Штрих код',
    'amount' => 'Количество',
    'summa' => 'Сумма',
    'nomenclature' => 'Номенклатура',
    'character' => 'Характеристика',
    'status_dt' => 'Дата установки статуса',
    'status' => 'Статус',
    'uploaded' => 'Отправлен',
    'deliveryNumber' => 'Номер доставки',
    'order' => 'Заявка',
    'implemented' => 'Реализован',
    'map' => 'Карта',
    'previousPoints' => 'Снятые баллы',
    'stock' => 'Склад',
    'statusID' => 'Статус ID',
    'paymentAmount' => 'Сумма оплаты',
    'fitting' => 'Примерка',
    'customerName' => 'Имя заказчика',
    'customerFamily' => 'Фамилия заказчика',
    'customerMiddleName' => 'Отчество заказчика',
    'order' => 'Заказ',
    'areaSD' => 'Регион для СД',
    'implementation' => 'Реализация',
    'cityCodePVZ' => 'Код города ПВЗ',
    'paid' => 'Оплачено',
    'promocode' => 'Промокод',
    'transportCompany' => 'Транспортная компания',
    'areaCode' => 'Код региона',
    'cityCode' => 'Код города',
    'postfix' => 'Постфикс'
);

echo '<pre>';
var_dump($client->get($namesCol));
echo '</br>';
var_dump($client->one('Тест'));



https://sourceforge.net/projects/nusoap/


Комментарии

Популярные сообщения из этого блога

Пишем логи на C# (.NET). Легкий способ.

Учебник yii2

Автоматический вход пользователя на сервер посредством putty (протокол SSH)