Создание файла WSDL для сервера SOAP
Я новичок во всем этом веб-сервисе, поэтому я постараюсь объяснить свою проблему настолько, насколько я могу ее понять до сих пор.
Я создал Soap-сервер на PHP:
try {
$server = new SOAPServer(
'webservice.wsdl',
array(
'uri' => 'http://example.com/soap/server.php'
)
);
$server->setClass('soap');
$server->handle();
} catch (SOAPFault $f) {
print $f->faultstring;
}
Тогда у меня есть класс Soap для сервера:
class soap
{
public function sendOrders($sXml)
{
$oXml = new SimpleXMLElement($sXml);
$sOrder = $oXml->children();
$sResult = '';
foreach ($sOrder as $OrderRow) {
$sOrderNr = $OrderRow->ORDERNR;
$sState = $OrderRow->STATE;
$sTimestamp = $OrdeRow->TIMESTAMP;
$oOrder = new Order;
$oOrder->load($sOrderNr);
if ($sState == 1) {
$oOrder->checkStatusChange('Approved', $oOrder);
$oOrder->{$oOrder->getCoreTableName() . '__status'} = new Field('Approved');
$sResult .= $sOrderNr . " 1 | ";
} elseif ($sState == 0) {
$oOrder->checkStatusChange('Declined', $oOrder);
$oOrder->{$oOrder->getCoreTableName() . '__status'} = new Field('Declined');
$sResult .= $sOrderNr . " 0 | ";
}
$oOrder->save();
}
return $sResult;
}
}
У меня есть тестовый клиент, который отправляет простой XML в следующем формате:
<xml>
<ORDER>
<ORDERNR>9nmf997d997701e15e30edac107b3664</ORDERNR>
<STATE>1</STATE>
<TIMESTAMP>123456789</TIMESTAMP>
</ORDER>
<ORDER>
<ORDERNR>9nmb1c3d4dfb067c04497ea51bd50d06</ORDERNR>
<STATE>0</STATE>
<TIMESTAMP>987654321</TIMESTAMP>
</ORDER>
</xml>
Теперь мне нужно создать простой файл WSDL для "описания" сервиса. Я должен сказать, что у меня есть немного знаний обо всей этой области веб-сервисов, поэтому я был бы благодарен за любую помощь.
Я знаком с документацией W3C http://www.w3schools.com/webservices/ws_wsdl_documents.asp
Заранее благодарю вас.
Обновление: Я пытался найти некоторые генераторы WSDL, но, похоже, ни один из них не работает.
1 answers
Решено
Простая библиотека под названием PhpWsdl сделала свое дело.