Общие сведения
Протокол и точки подключения
- Обмен данными осуществляется посредством передачи xml документов по протоколу HTTP
- Конечная точка имеет вид http(s)://%адрес сервера Grotem%/%имя решения%/admin/%метод%, номер порта зависит от конфигурации web сервера IIS (по умолчанию 80 для http и 443 для https), например:
http://bitmobile3.cloudapp.net/superagent/admin/uploaddata2 - Используется "Basic" авторизация, имя пользователя - "admin", пароль - пароль решения.
- Сервер поддерживает обмен сжатыми данными, клиент должен указать значение "gzip" или "deflate" в заголовке "content-encoding" и(или) "accept-encoding"
- Кодировка - UTF-8
Методы
UploadData2 (POST)
- Загружает данные на сервер.
- Структура xml документа:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<RegionalSettings NumberDecimalSeparator="" NumberGroupSeparator=""/>
<Rows>
<Row _Type="%Тип данных%" Id="%GUID объекта%" ...%атрибуты объекта%>
<%Подчиненная таблица% >
<Row LineNumber="%номер строки%" ...%атрибуты строки%/>
<Row LineNumber="%номер строки%" ...%атрибуты строки%/>
</%Подчиненная таблица%>
</Row>
</Rows >
</Root> - Типы данных - имя типа объекта, например "Catalog.Outlet"
- Подчиненные таблицы - объект может иметь 0 или более подчиненных таблиц.
- В необязательном теге RegionalSettings указываются значения разделителей целой и дробной частей числа, групп разрядов.
- Возвращаемое значение - "ок" в случае успеха или текст ошибки в противном случае.
- Пример: example1.xml
- Команда -ud утилиты utils.exe использует метод UploadData2 для загрузки данных.
UploadData2Async (POST)
- Асинхронная версия UploadData2
- Возвращает GUID сессии загрузки и продолжает работу в фоновом режиме.
- Для получения статуса сессии следует использовать метод AsyncTaskStatus
AsyncTaskStatus (GET)
- Возвращает статус сессии асинхронной загрузки данных
- Возможные значения: "ok", "xxx completed.." (где xxx - количество обработанных объектов), или текст ошибки.
- Пример запроса: http://bitmobile3.cloudapp.net/superagent/admin/asynctaskstatus/542EF0E8-C178-406E-BF55-800BEE853AD9
Реализация
Пример отправки данных из 1С
//RequestFileName содержит данные для отправки на сервер
//сжимаем данные
ZipFileName = GetTempFileName(".zip");
ZipFile = New ZipFileWriter(ZipFileName, , , ZIPCompressionMethod.Deflate, ZIPCompressionLevel.Optimal);
ZipFile.Add(RequestFileName, ZIPStorePathMode.StoreRelativePath, ZIPSubDirProcessingMode.ProcessRecursively);
ZipFile.Write();
//отправляем
Connection = New HTTPConnection("bitmobile3.cloudapp.net",80,"admin", "S0mePassword");
ResultFileName = GetTempFileName();
HeaderHTTP = New Map();
HeaderHTTP.Insert("Content-Encoding", "deflate");
Connection.Post(ZipFileName,"/bitmobile/admin/uploaddata2", ResultFileName, HeaderHTTP);
//результат
Result = New TextDocument();
Result.Read(ResultFileName, TextEncoding.UTF8);
For C = 1 To Result.LineCount() Do
Message(Result.GetLine(C));
EndDo;