Добро пожаловать на сайт Bitrix Q&A, где вы можете задавать вопросы о программировании и разработке на Битрикс и получать быстрые и квалифицированные ответы от профессионалов!




web-сервисы и ошибка в классах Битрикс

0 голосов
Помогите пожалуйста!

Есть вот такой компонент web сервер

<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

if(!CModule::IncludeModule("webservice") || !CModule::IncludeModule("iblock"))
return;
// наш новый класс наследуется от базового IWebService
class CChangeElement extends IWebService
{
function exchange($iblock, $params){
$arReturn = array('result'=>'OK','error'=>0);
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/bitrix/log_m.txt");
AddMessage2Log(print_r($params, true), "webservice");
foreach ($params as $value) {
CIBlockElement::SetPropertyValuesEx(
$value['element'],
$iblock,
array($value['code'],$value['val'])
);
}

$mess = 'OK';
$arReturn['result'] = $mess;
$arReturn['error'] = '0';

return $arReturn;
}
// метод GetWebServiceDesc возвращает описание сервиса и его методов
function GetWebServiceDesc()
{
$wsdesc = new CWebServiceDesc();
$wsdesc->wsname = "bitrix.changes"; // название сервиса
$wsdesc->wsclassname = "CChangeElement"; // название класса
$wsdesc->wsdlauto = true;
$wsdesc->wsendpoint = CWebService::GetDefaultEndpoint();
$wsdesc->wstargetns = CWebService::GetDefaultTargetNS();

$wsdesc->classTypes = array();
$wsdesc->structTypes = Array();

$wsdesc->structTypes["arParam"] = array(
"element"=> array("varType" => "integer", "strict" => "no"),
"code" => array("varType" => "string", "strict" => "no"),
"val" => array("varType" => "string", "strict" => "no"),
);
$wsdesc->structTypes["arMessage"] = array(
"result" => array("varType" => "string", "strict" => "no"),
"error" => array("varType" => "string", "strict" => "no"),
);

$wsdesc->classes = array(
"CChangeElement"=> array(
"exchange" => array(
"type" => "public",
"input" => array(
"iblock" => array("varType" => "integer", "strict" => "no"),
"params" => array("varType" => "ArrayOfArParam","arrType" => "arParam", "strict" => "no"),
),
"output" => array(
array("varType" => "arMessage", "strict" => "no")
),
"httpauth" => "N"
),
)
);

return $wsdesc;
}
}

$arParams["WEBSERVICE_NAME"] = "bitrix.changes";
$arParams["WEBSERVICE_MODULE"] = "";
$arParams["WEBSERVICE_CLASS"] = "CChangeElement";

// передаем в компонент описание веб-сервиса
$APPLICATION->IncludeComponent(
"bitrix:webservice.server",
"",
$arParams
);

die();
?>

при обращении к нему веб клиента в логах отражаются ошибки в классах битрикса

/var/www/clients/client1/web1/web/bitrix/modules/webservice/classes/general/soap/soapserver.php:146
/var/www/clients/client1/web1/web/bitrix/modules/webservice/classes/general/soap/soapserver.php:351
/var/www/clients/client1/web1/web/bitrix/modules/webservice/classes/general/webservice.php:90
/var/www/clients/client1/web1/web/bitrix/components/bitrix/webservice.server/component.php:73

и последнее указание на ошибку это наименование вебсервиса в компоненте

$arParams["WEBSERVICE_NAME"] = "bitrix.changes";

Куда смотреть, что бы найти ошибку. Спасибо!
спросил 26 Сен, 14 от аноним
Было бы неплохо и сам текст ошибки привести...

Ваш ответ

Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

Похожие вопросы

+1 голос
1 ответ
0 голосов
1 ответ
0 голосов
1 ответ
спросил 19 Янв, 16 от skyglider (340 баллов)