В этом разделе рассказывается о том, как из системы «1С:Предприятие» можно обратиться к любому произвольному HTTP-сервису, опубликованному в Интернете, а также как обратиться к REST-интерфейсу любой внешней системы, доступному по протоколу OData.
Для простоты мы покажем примеры обращения к HTTP-сервисам и REST-интерфейсу (OData) прикладного решения «1С:Предприятия», реализованные нами в той же демонстрационной конфигурации, что и сами сервисы.
Ниже мы рассмотрим примеры получения, удаления и добавления данных прикладного решения «1С:Предприятия» с помощью HTTP-сервисов, разработанных нами в предыдущем разделе «». А затем изменение данных прикладного решения через REST-интерфейс (OData), который будет рассматриваться в следующем разделе «».
подробнее
Подробнее познакомиться с реализацией и использованием HTTP-запросов можно в демонстрационной конфигурации «Примеры работы», которая прилагается к книге.
Для обращения к HTTP-сервисам и REST-интерфейсу (OData) используются такие объекты встроенного языка, как HTTPСоединение, HTTPЗапрос и HTTPОтвет.
Для того чтобы изменить (добавить, удалить, прочитать и т. д.) данные информационной базы через REST-интерфейс, нужно создать HTTP-соединение с сервером (например, "localhost"), на котором опубликованы HTTP-сервисы (как созданные разработчиком, так и составляющие автоматический REST-интерфейс) для прикладного решения. Затем создать HTTP-запрос на основе адреса ресурса данных, которые требуется прочитать или изменить с помощью запроса. После этого нужно записать изменяемые данные в строку JSON/XML (или в файл, откуда будет считано тело запроса при отправке) и установить тело HTTP-запроса из этой строки (или установить имя файла тела запроса). И затем с помощью HTTP-соединения отправить запрос к серверу с соответствующим методом (POST, PUT/PATCH, DELETE и др.).
Чтобы выполнить HTTP-запрос нужного вида, у объекта HTTPСоединение существуют методы:
Ниже для ознакомления приведен пример POST-запроса в формате atom/XML, с помощью которого создается новый элемент справочника Товары (листинг 1.74).
Листинг 1.74. POST-запрос в формате atom
POST http://host/base/odata/standard.odata/Catalog_Товары HTTP/1.1
User Agent: Fiddler
Host: host
Content Length: 981
<entry>
<category term="StandardODATA.Catalog_Товары" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<title type="text"/>
<updated>2014 02 14T12:05:55</updated>
<author/>
<summary/>
<content type="application/xml">
<m:properties xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<d:DeletionMark>false</d:DeletionMark>
<d:Parent_Key>bbb079ae 8c51 11db a9b0 00055d49b45e</d:Parent_Key>
<d:IsFolder>false</d:IsFolder>
<d:Code>000000800</d:Code>
<d:Description>Шлепанцы</d:Description>
<d:Артикул>SL56X</d:Артикул>
<d:Поставщик_Key>086715b0 f348 11db a9c5 00055d49b45e</d:Поставщик_Key>
<d:Вид>Товар</d:Вид>
<d:Штрихкод/>
<d:Описание><html>Шлепанцы пляжные</html></d:Описание>
</m:properties>
</content>
</entry>
Тот же запрос в формате json выглядит гораздо компактнее (листинг 1.75).
Листинг 1.75. POST-запрос в формате json
POST http://host/base/odata/standard.odata/Catalog_Товары HTTP/1.1
Accept: application/json
Accept Charset: UTF 8
User Agent: Fiddler
Content Type: application/json
Content Length: 2426
{
"DeletionMark":false,
"Parent_Key":"bbb079ae 8c51 11db a9b0 00055d49b45e",
"IsFolder":false
"Code":"000000800",
"Description":"Шлепанцы",
"Артикул":"SL56X",
"Поставщик_Key":"086715b0 f348 11db a9c5 00055d49b45e",
"Вид":"Товар",
"Штрихкод":null,
"Описание:"Шлепанцы пляжные"
}