пятница, 31 марта 2017 г.

Вызов веб-сервиса 1С из командной строки (cURL)

Задача:
Из внешней базы (сайт) необходимо отправлять произвольную строку в 1С.
Для этого в 1С необходимо создать новый веб-сервис.
Входной параметр - просто строка. Обычно JSON.
Действия с полученными данными: простая запись в регистр сведений.

Проблемы:
Простой GET запрос не работает, веб-сервис не вызывается.
Требуется авторизация. => POST-запрос.

Решение:

В 1С создаем новый веб-сервис:






Публикуем на веб-сервере:


Рабочий пример отправки запроса с помощью CURL:
curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:"  -d @request.xml -X POST https://myComp.com/myDb/ws/export.1cws -k -u {user}:{password}

Файл request.xml

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><Ping xmlns="http://www.myComp.com/myDb/Export"><Data>Hello</Data></Ping></soap:Body></soap:Envelope>


Ответ:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<m:PingResponse xmlns:m="http://www.ileasing.by/sales2/Export">
<m:return xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">{"status":"ok","text":""}</m:return>
</m:PingResponse>
</soap:Body>
</soap:Envelope>