Ладно. Тогда конкретно.
Вот так работает и возвращает xml:
<?
//require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"
;
function validateDate($date, $format = 'Y-m-d H:i:s', $tz)
{
$d = DateTime::createFromFormat($format, $date, $tz);
return $d && $d->format($format) == $date;
}
class SoapGetSales {
function getSales($vhod) {
$tz = new DateTimeZone('Asia/Yekaterinburg');
if( validateDate($vhod->dateS, 'Y-m-d\TH:i:s', $tz) )
{
$UzheDate = DateTime::createFromFormat('Y-m-d\TH:i:s', $vhod->dateS, $tz);
}
else throw new SoapFault("Server", "Дата $vhod->dateS не дата."
;
if( $vhod->id = "" ) throw new SoapFault("Server", "Идентификатор $vhod->id - пуст."
;
$Nachalo = date_time_set($UzheDate, 0, 0, 0);
$Konchalo= date_time_set($UzheDate, 23, 59, 59); // я знаю - это не верно
// $strSql =
//"SELECT
// A.id_term AS id_term,
// SUM(A.sales) AS sales
//FROM auto_main_base.summary_table as A
//WHERE A.datetime>=".$Nachalo->format('Y-m-d H:i:s')."
// AND A.datetime<=".$Konchalo->format('Y-m-d H:i:s')."
// AND F.id_term = ".$vhod->id."
//GROUP BY A.id_term";
$trm_last_info = -1;
// $res_tranz = $DB->Query($strSql, false, $err_mess.__LINE__);
// while($arElement = $res_tranz->GetNext()) {
// $trm_last_info = $arElement['sales'];
// }
return array("count"=>$trm_last_info);
}
}
ini_set("soap.wsdl_cache_enabled", "0"
; // отключаем кеширование WSDL-файла для тестирования
//Создаем новый SOAP-сервер
$server = new SoapServer("http://{$_SERVER['HTTP_HOST']}/terminals/wsdl/TerminalService.wsdl.php"
;
//Регистрируем класс обработчик
$server->setClass("SoapGetSales"
;
//Запускаем сервер
$server->handle();
?>
а если включить
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"
;
то не работает - возвращает html.
Что я делаю не верно? Причем, различные ob_end_clean не помогают.