Общие сведения

Протокол и точки подключения

  1. Обмен данными осуществляется посредством передачи xml документов по протоколу HTTP
  2. Конечная точка имеет вид http(s)://%адрес сервера Grotem%/%имя решения%/admin/%метод%, номер порта зависит от конфигурации web сервера IIS (по умолчанию 80 для http и 443 для https), например:
    http://server.cloudapp.net/agent/admin/uploaddata2
  3. Используется "Basic" авторизация, имя пользователя - "admin", пароль - пароль решения.
  4. Сервер поддерживает обмен сжатыми данными, клиент должен указать значение "gzip" или "deflate" в заголовке "content-encoding" и(или) "accept-encoding"
  5. Кодировка - UTF-8

Методы

UploadData2 (POST)

  1. Загружает данные на сервер. 
  2. Структура xml документа:

    <?xml version="1.0" encoding="UTF-8"?>
    <Root>
        <RegionalSettings NumberDecimalSeparator="" NumberGroupSeparator=""/>
        <Rows>
            <Row _Type="%Тип данных%" Id="%GUID объекта%" ...%атрибуты объекта%>
                <%Подчиненная таблица% >
                    <Row LineNumber="%номер строки%" ...%атрибуты строки%/>
                    <Row LineNumber="%номер строки%" ...%атрибуты строки%/>
                </%Подчиненная таблица%>
            </Row>
        </Rows >
    </Root>

  3. Типы данных - имя типа объекта, например "Catalog.Outlet"
  4. Подчиненные таблицы - объект может иметь 0 или более подчиненных таблиц.
  5. В необязательном теге RegionalSettings указываются значения разделителей целой и дробной частей числа, групп разрядов.
  6. Возвращаемое значение - "ок" в случае успеха или текст ошибки в противном случае.
  7. Пример: example1.xml
  8. Команда -ud утилиты utils.exe использует метод UploadData2 для загрузки данных.

UploadData2Async (POST)

  1. Асинхронная версия UploadData2
  2. Возвращает GUID сессии загрузки и продолжает работу в фоновом режиме.
  3. Для получения статуса сессии следует использовать метод AsyncTaskStatus

AsyncTaskStatus (GET)

  1. Возвращает статус сессии асинхронной загрузки данных
  2. Возможные значения: "ok", "xxx completed.." (где xxx - количество обработанных объектов), или текст ошибки.
  3. Пример запроса: http://server.cloudapp.net/agent/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("server.cloudapp.net",80,"admin", "S0mePassword"); 
ResultFileName = GetTempFileName(); 
HeaderHTTP = New Map(); 
HeaderHTTP.Insert("Content-Encoding", "deflate");
Connection.Post(ZipFileName,"/webapp/admin/uploaddata2", ResultFileName, HeaderHTTP);

//результат
Result = New TextDocument();
Result.Read(ResultFileName, TextEncoding.UTF8);
    For C = 1 To Result.LineCount() Do
    Message(Result.GetLine(C));
EndDo;

  • Нет меток
Написать комментарий...