Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Отладка soap-запросов, отправляемых из 1С

Отладка soap-запросов, отправляемых из 1С
Я
   Evgenius
 
17.04.19 - 14:03
Доброго времени суток.
Возникла проблема при подключении к стороннему web-сервису, а еще одна обнаружилась при попытке понять, что именно 1С передает:
1.  При вызове метода web-сервиса получаем ошибку:
"The SOAP action specified on the message, '', does not match the HTTP SOAP Action"
2. Чтобы посмотреть на сам https-запрос, установил fiddler, настроил его на расшифровку https-трафика.
В результате получил другую ошибку:
"Ошибка работы с Интернет: Удаленный узел не прошел проверку"
Ок, решил добавить сертификат, который устанавливает fiddler для расшифровки трафика, в доверенное хранилище 1С.
Экспортировал сертификат. Он имеет формат *.cer, и содержимое файла явно не подходит, чтобы вставить его в cacert.pem.
Вот здесь:
Не могу заставить работать 1С через Fiddler
автор пишет, что ему это удалось, но без подробностей. Миста, видимо, глючит, и из этого топика личное сообщение автору отправить нельзя.

Подскажите, пожалуйста, кто что знает
1) о самой первой ошибке,
2) и о добавлении в 1С-овское хранилище fiddler'овского сертификата для просмотра трафика.
Спасибо.
 
 
   Cyberhawk
 
1 - 17.04.19 - 14:25
Релиз платформы?
   Cyberhawk
 
2 - 17.04.19 - 14:26
После где-то 8.3.7 не нужно добавлять сертификаты в файл каталога платформы 1С, а надо в хранилище ОС добавлять
   Evgenius
 
3 - 17.04.19 - 14:35
(2) Релиз 8.3.10, но в режиме совместимости с 8.2.16, если в данном случае это имеет значение.
Если так, то должно было бы работать: fiddler именно в хранилище ОС свой сертификат добавляет, при наличии прав, а права есть.
   Asmody
 
4 - 17.04.19 - 14:36
(0) Сертификат надо сохранять в формате base64. Открывать блокнотом и копировать содержимое в конец cacert.pem
   Evgenius
 
5 - 17.04.19 - 14:42
(4) Это понятно, вопрос не в этом, см. (0):
содержимое файла явно не подходит, чтобы вставить его в cacert.pem.
Если подробнее: это  двоичный файл, не текст в base64. Какой тут подойдет конвертер, я не знаю, OpenSSL требует точно указать формат входного файла (который я не знаю).
   Cyberhawk
 
6 - 17.04.19 - 16:57
(3) Да, режим совместимости ниже 8.3.8 влечет неоходимость юзать файлик cacert.pem
   Cyberhawk
 
7 - 17.04.19 - 17:02
"содержимое файла явно не подходит, чтобы вставить его в cacert.pem" // DER что ли? Ну онлайн-конвертеров тонна, как и утилитка openssl
   Asmody
 
8 - 17.04.19 - 17:04
(5) Windows умеет экспортировать сертификаты в base64 (подсказка - тип файла в диалоге Сохранить)
   Evgenius
 
9 - 18.04.19 - 07:43
(6) Похоже, что дело не в самом режиме совместимости, а в том, что КОНФИГУРАЦИИ, которые требуют этого режима, не используют новые возможности платформы (те, про которые вы напомнили, появившиеся после 8.3.7): я дополнил вызов функции <WSСсылка>.СоздатьWSПрокси, явно передав в нее параметр ЗащищенноеСоединение:

Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows())

В результате был подхвачен сертификат из хранилища Windows, вызов прошел, и трафик начал расшифровываться Fiddler'ом.

Так что, теперь вопрос в первой, основной проблеме:
"The SOAP action specified on the message, '', does not match the HTTP SOAP Action"

Что скажете, джентльмены?
   Cyberhawk
 
10 - 18.04.19 - 07:59
Фиддлер не помог что ли?
   Evgenius
 
11 - 18.04.19 - 08:29
(10) Фиддлер позволяет увидеть запрос. Но в этом запросе я никакого криминала не вижу
   Evgenius
 
12 - 18.04.19 - 08:31
(10) И вообще не понимаю, что эта ошибка означает, а потому и исправить не знаю, как. В этом и вопрос: что это за ошибка
("The SOAP action specified on the message, '', does not match the HTTP SOAP Action") ?

Если я догадываюсь правильно, и дело в том, что в http-запросе нет заголовка SOAPAction, то тогда, соответственно, вопрос уточняется: как этот заголовок в http-запрос добавить
   baza1
 
13 - 18.04.19 - 09:12
Тоже было с action-ом проблема, принимающая сторона принимала SOAPAction либо пустым, либо правильно заполненным.
Но проблема в 1С, что пустой заголовок не вставляется в запрос.

Т.е. если написать
    Заголовки = Новый Соответствие;
      Заголовки.Вставить("SOAPAction", "");                                                
      HTTPЗапрос = Новый HTTPЗапрос("...",Заголовки);
то заголовок SOAPAction в запросе не будет вообще, даже "", а сервис его ждал.

Пришлось явно указывать полный путь (даже не просто имя метода).

    Заголовки = Новый Соответствие;
      Заголовки.Вставить("SOAPAction", "http://.....ru/ws/..../"; + ИмяМетода);                        
      HTTPЗапрос = Новый HTTPЗапрос("....",Заголовки);

может проблема из этой серии?
   Evgenius
 
14 - 18.04.19 - 12:06
(13) Скорее всего, именно из этой, но вопрос-то, есть ли решение для объекта WSПрокси
   Сияющий в темноте
 
15 - 18.04.19 - 15:58
(12)он вам говорит,что указанный заголовок Action,и рисует пустую строку,не является правильным заголовком Action,который сервис ожидает.
Вам,удалось засунуть пустой заголовок,но он должен быть не пустой.
   Cyberhawk
 
16 - 18.04.19 - 18:49
(11) Так осталось сравнить этот запрос с тем, что работает из СоапУИ
   Evgenius
 
17 - 19.04.19 - 08:04
(15) Да, он это говорит, но если верить fiddler'у, то такого заголовка в запросе, нет, ни пустого, ни заполненного.
Есть директива action в заголовке Content-type:

POST /.../XRMServices/2011/Organization.svc HTTP/1.1
Host: ....ru

User-Agent: 1C+Enterprise/8.3
Accept: */*
Content-Type: application/soap+xml;charset=utf-8;action="http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/RetrieveMultiple";
Content-Length: 987

И самое главное, у объекта WSпрокси нет методов для установки заголовков. Так что, мне ничего не "удавалось"

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.