Имя: Пароль:
1C
1С v8
Подключение к сервису на базе siebel. Проблема авторизации.
0 fduch1
 
21.12.23
13:16
Друзья, возникла проблема с подключением к веб сервису на базе сибл(оракл). Суть в следующем, необходимо передать пакет XDTO веб сервису. Авторизация происходит в заголовке пакета следующим образом:
<soap:Envelope xmlns:soap=""" target="_blank">http://schemas.xmlsoap.org/soap/envelope/""> <soap:Header>
<UsernameToken>user</UsernameToken>
<PasswordText>pass</PasswordText>
<SessionType>None</SessionType>
</soap:Header>

Авторизация через прокси WSПрокси не проходит, сервис возвращает ошибку некорректного разбора сообщения.

Что пробовал делать - передача SOAP пакета через HTTP-запрос. Вот на него сервис вообще не реагирует - ошибка HTTP 500. Может, кто нибудь сталкивался, у меня уже идеи заканчиваются, как достучаться до это этого веб-сервиса.
1 бегинер
 
21.12.23
14:00
попробуй через SoapUI добиться коннекта, потом уж из 1С
https://soapui.ru/
2 fduch1
 
22.12.23
10:36
(1) Из SoapUI все проходит без проблем. Может есть какая-либо api для SoapUI , куда можно запихнуть soap пакет и отправить из 1С?
3 NorthWind
 
22.12.23
11:15
> Авторизация через прокси WSПрокси не проходит, сервис возвращает ошибку некорректного разбора сообщения.
> Из SoapUI все проходит без проблем.

Кодировку проверьте. BOM в особенности.
4 fduch1
 
22.12.23
11:52
(3) Извините, наверное не совсем точно выразился. Сейчас в soapui отправляется пакет вида:

СтрокаSOAP = "<soap:Envelope xmlns:soap=""" target="_blank">http://schemas.xmlsoap.org/soap/envelope/"">
    |<soap:Header>
    |<UsernameToken>user</UsernameToken>
    |<PasswordText>pass</PasswordText>
    |<SessionType>None</SessionType>
    |</soap:Header>                                                                      
    |<soap:Body>
    |<m:ReceiveWarrantyClaim1C_Input xmlns:m=""" target="_blank">http://siebel.com/CustomUI"">
    | "
    +лХМЛ+
    "
    |<m:g_ProcessName xmlns:xs=""http://www.w3.org/2001/XMLSchema""
    |xmlns:xsi=""" target="_blank">http://www.w3.org/2001/XMLSchema-instance""/>
    |</m:ReceiveWarrantyClaim1C_Input>
    |</soap:Body>
    |</soap:Envelope>   ";

XDTO формирует пакет без заголовка, без секции header. Как пример привожу ниже, формируется пакет средствами платформы, перехвачен в wireshark.

СтрокаSOAP = "<soap:Envelope xmlns:soap=""" target="_blank">http://schemas.xmlsoap.org/soap/envelope/"">                                                                      
    |<soap:Body>
    |<m:ReceiveWarrantyClaim1C_Input xmlns:m=""" target="_blank">http://siebel.com/CustomUI"">
    | "
    +лХМЛ+
    "
    |<m:g_ProcessName xmlns:xs=""http://www.w3.org/2001/XMLSchema""
    |xmlns:xsi=""" target="_blank">http://www.w3.org/2001/XMLSchema-instance""/>
    |</m:ReceiveWarrantyClaim1C_Input>
    |</soap:Body>
    |</soap:Envelope>   ";

Кодировку, я конечно, проверю, от нас уходит в utf-8, как и требует веб сервис. А вот как силами XDTO сформировать пакет с header по полученной wsdl никак не понимаю.
5 dmt
 
22.12.23
14:28
(4) СтрокаSOAP = СтрЗаменить(СтрокаSOAP, "<soap:Body>", ТекстХедера + "<soap:Body>")
6 fduch1
 
22.12.23
14:33
Спасибо. Проблема решена. Необходимо было в заголовке пакета "SOAPAction" проставить действие в двойные кавычки:

Заголовки.Вставить("SOAPAction", """document/http://siebel.com/CustomUI:method""");
7 fduch1
 
22.12.23
14:47
(6) Отмечу, что вызов через XDTOПрокси так и не прошел, только через HTTPЗапрос.
8 fduch1
 
22.12.23
15:29
*WSПрокси