Коллеги добрый день,
Есть ли какой-то рабочий пример по сабжу.
Заранее спасибо
С уважением, Павел
Нравится
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.
Добрый день, Павел!
Похоже, нашел на Community подходящий пример:
http://www.community.terrasoft.ru/blogs/3521
Если что, вот SDK:
http://terrasoft.ru/sdk/index.html?frmname=topic&frmfile=TSObjectLibrar…
Добрый день, Андрей
Спасибо за пример.
Попробовали реализовать, при попытке выполнить код:
<?
ini_set('display_errors',1);
error_reporting(E_ALL);
set_time_limit(0);
include 'itsTerrasoftClass.php';
$ws = new itsTerrasoftWS();
$ws->set_Host('http://192.168.0.4/wsdl/IServer');
$ws->set_Username('ttt');
$ws->set_Password('ttt');
$ws->set_wsClient();
$wsConfigurations = $ws->get_wsConfigurations();
$ws->set_Configuration($wsConfigurations[0]);
$ws->OpenConfiguration();
$SQL = "select top 1 [OfficialAccountName] from [dbo].[tbl_Account]";
$ws->CreateXML($SQL);
$ws->ExecuteSQL();
$xml = DOMDocument::loadXML( $ws->get_XMLResult() );
$params = $xml->getElementsByTagName('R');
$k=0;
foreach ($params as $param)
{
echo $params->item($k)->getAttribute('F0')."
";
$k++;
}
$ws->CloseConfiguration();
?>
Имеем следующую ошибку:
Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Server] No SQL statement provided in C:\srv\www\terrasoft\itsTerrasoftClass.php:159 Stack trace: #0 C:\srv\www\terrasoft\itsTerrasoftClass.php(159): SoapClient->__call('PrepareSendPack...', Array) #1 C:\srv\www\terrasoft\itsTerrasoftClass.php(159): SoapClient->PrepareSendPackages('9064664010F3D1E...', 'PAA/AHgAbQBsACA...', false, -1, 51200000) #2 C:\srv\www\terrasoft\itsTerrasoftClass.php(165): itsTerrasoftWS->PrepareSendPackages() #3 C:\srv\www\terrasoft\index.php(32): itsTerrasoftWS->ExecuteSQL() #4 {main} thrown in C:\srv\www\terrasoft\itsTerrasoftClass.php on line 159
Павел, я бы Вам рекомендовал посмотреть комментарии к теме, где предоставляется код, и обратиться за помощью к автору. Так как это не продукт компании Terrasoft, я не владею информацией о его работе.
Попробуйте выполнить такой же точно код, как в примере.
Павел, думаю, все же стоит попробовать написать в ту тему. Также проверьте, подходят ли имя пользователя и пароль и к той ли конфигурации выполняется подключение.
Также можете ознакомиться с примером на SDK:
http://www.terrasoft.ru/sdk/IDatasetExample_js.html
он не на PHP, но, я думаю, что адаптировать не составит Вам большого труда.
Добрый день, Андрей
Пытаемся реализовать аналогичный пример на С#.
Ссылка: http://www.community.terrasoft.ru/blogs/7482
Но служба Terrasoft Web Services HTTP Server, отвечает в кодировке:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/xml; charset=ISO-8859-1
Content-Length: 576
Есть ли возможность каким-то образом настроить ответ в UTF-8?
Полный запрос:
POST http://192.168.0.4/soap/IServer HTTP/1.1
Content-Type: text/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo78/6OVekaNJswdxScc0uIEAAAAA5SP2bc+OeUqw8iMfL1ptLCBS9yGhu+RHod56QvUhwZAACQAA
SOAPAction: "urn:TSWebServicesServerLibraryInternal-IServer#Get_ServerConfigurationNames"
Host: 192.168.0.166
Content-Length: 345
Expect: 100-continue
Connection: Keep-Alive
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><q1:Get_ServerConfigurationNames xmlns:q1="urn:TSWebServicesServerLibraryInternal-IServer"/></s:Body></s:Envelope>
Полный ответ:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/xml; charset=ISO-8859-1
Content-Length: 576
<?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS1="urn:TSWebServicesServerLibraryInternal-IServer"><NS1:Get_ServerConfigurationNamesResponse><return xsi:type="xsd:string">Samo Soft;Demo</return></NS1:Get_ServerConfigurationNamesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
Спасибо.
Здравствуйте, Павел!
Проще всего будет уже на Вашем приложении конвертировать ответ, полученный в ISO-8859-1.
Вот несколько ссылок, которые Вам помогут:
http://stackoverflow.com/questions/1922199/c-sharp-convert-string-from-…
http://php.net/manual/en/function.utf8-encode.php
Добрый день, Андрей
Мы используем следующий пример:
ws.IServer sc = new ws.ServerClient(); ws.Get_ServerConfigurationNamesRequest rqGet_ServerConfigurationNames = new ws.Get_ServerConfigurationNamesRequest(); ws.Get_ServerConfigurationNamesResponse rsGet_ServerConfigurationNames = new ws.Get_ServerConfigurationNamesResponse(); rsGet_ServerConfigurationNames = sc.Get_ServerConfigurationNames(rqGet_ServerConfigurationNames);
На последней строке он падает, но как нетрудно заметить, доступ к контенту мы еще не получили.
Так что перекодировать просто нечего.
Сообщение об ошибке:
Тип содержимого text/xml; charset=ISO-8859-1 ответного сообщения не соответствует типу содержимого привязки (text/xml; charset=utf-8). При использовании особого кодировщика необходимо правильно реализовать метод IsContentTypeSupported. Первые 562 байтов ответного сообщения: "
<?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS1="urn:TSWebServicesServerLibraryInternal-IServer"><NS1:Get_ServerConfigurationNamesResponse><return xsi:type="xsd:string"></return></NS1:Get_ServerConfigurationNamesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
Ждем ваших комментариев.
Спасибо.
Павел, вероятно, класс настроен на работу только с кодировкой charset=ISO-8859-1, в том числе и на приеме сообщений, а Вы посылаете запрос в charset=utf-8. Попробуйте посылать в ISO-8859-1.