Пример работы с БД Terrasoft по API средствами PHP

Коллеги добрый день,

Есть ли какой-то рабочий пример по сабжу.
Заранее спасибо

С уважением, Павел

Нравится

10 комментариев

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Добрый день, Павел!
Похоже, нашел на 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, я не владею информацией о его работе.
Попробуйте выполнить такой же точно код, как в примере.

Добрый день, Андрей

Код по ссылке посмотрели. Выполняем, собственно, точно такой же код.
Но т.к. пост за 2009 год, боюсь до автора мы не достучимся.
Да и вложения на форуме по ссылке невозможно скачать.

С уважением, Павел

Павел, думаю, все же стоит попробовать написать в ту тему. Также проверьте, подходят ли имя пользователя и пароль и к той ли конфигурации выполняется подключение.
Также можете ознакомиться с примером на 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.

Показать все комментарии