Текст запроса XDTO

1. starjevschik 12.09.18 15:32 Сейчас в теме
Есть отправка запроса на внешний веб-сервис, примерно так вот

Прокси = Новый WSПрокси(Определение....);
...
Товары = Прокси.ФабрикаXDTO.Создать(ТипОбъектаТовары);
....
Ответ = Прокси.SetGoods(Товары);

там с той стороны что-то не работает и они просят прислать текст запроса. Я так понимаю, на ту сторону отправляется некий XML.
Как мне его получить?
+
По теме из базы знаний
Найденные решения
14. M61 20 13.09.18 10:30 Сейчас в теме
ХМЛ = Новый ЗаписьXML;
ХМЛ.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ХМЛ, Товары);
Результат = ХМЛ.Закрыть();

Результат будет текст xml файла типа строка
starjevschik; +1
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. M61 20 13.09.18 07:07 Сейчас в теме
(1)От вас отправляется пакет Товары. Поставьте точку останова на строке Ответ = Прокси.SetGoods(Товары); и вычислите выражение "Товары". Если параметр веб-сервиса имеет такой же тип и структуру, значит запрос отправится успешно. Часто бывает, что на входе веб-сервиса тип параметра "string". В таком случае "Товары" надо сериализовать в xml перед запросом и отправить как строку.
+
11. starjevschik 13.09.18 08:58 Сейчас в теме
(10) Товары имеет тип и значение XDTOОбъект. Смысла в этом знании нет никакого. Нужен текст XML, который передается сервису.
+
3. starjevschik 12.09.18 16:15 Сейчас в теме
(2) спасибо, там такой же вопрос, но без ответа
неужели нет какого-нибудь метода ПолучитьЗапросXML()?
+
9. oldcopy 173 12.09.18 20:28 Сейчас в теме
(3) Используйте

ФабрикаXDTO.ЗаписатьXML() 


в какую-нибудь временную папку и смотрите что он там отправляет.
starjevschik; +1
12. starjevschik 13.09.18 09:09 Сейчас в теме
(9) я так пробовал сделать
Запись = Новый ЗаписьXML;
	Прокси.ФабрикаXDTO.ЗаписатьXML(Запись, Товары);



но что-то не сложилось, я не понимаю, что она хочет
Ошибка при вызове метода контекста (ЗаписатьXML)
Прокси.ФабрикаXDTO.ЗаписатьXML(Запись, Товары);
по причине:
Ошибка при записи XDTO
по причине:
Не установлен приемник XML
+
4. NatalkaBal 28 12.09.18 16:19 Сейчас в теме
ПолучитьИмяВременногоФайла() может подойтемт
+
5. ditp 91 12.09.18 16:42 Сейчас в теме
Адрес сервиса http или https?
+
6. starjevschik 12.09.18 16:44 Сейчас в теме
(5) http
запрос они поймали на той стороне.
Но как получить его здесь, я пока не понял.
+
7. antz 12.09.18 17:25 Сейчас в теме
(6) Поставь SoapUI, в ней можно посмотреть.
+
13. starjevschik 13.09.18 09:12 Сейчас в теме
(7)
(6)
это все, наверное, здорово, но дело происходит на клиентском сервере, ставить туда какое-то левое ПО не очень хотелось бы.
Странно, что нет простых методов, неужели это так сложно...
+
8. ditp 91 12.09.18 17:44 Сейчас в теме
(6)
https://www.nirsoft.net/utils/smsniff.html

Покажет что и как ушло и что в ответ получили.
+
14. M61 20 13.09.18 10:30 Сейчас в теме
ХМЛ = Новый ЗаписьXML;
ХМЛ.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ХМЛ, Товары);
Результат = ХМЛ.Закрыть();

Результат будет текст xml файла типа строка
starjevschik; +1
15. starjevschik 13.09.18 10:43 Сейчас в теме
(14) о ес! спасибо большое. Получилось.
+
16. oldcopy 173 13.09.18 11:41 Сейчас в теме
Можно еще так:

Запись = Новый ЗаписьXML;
 	Запись.ОткрытьФайл(ПутьКФайлуXML,"windows-1251");
   	Запись.ЗаписатьОбъявлениеXML(); 
    ФабрикаXDTO.ЗаписатьXML(Запись, Товары);
 	Запись.Закрыть();


Кодировку установите какую вам надо, в нашем случае это windows-1251.

Мы при работе с платежными шлюзами стали применять такую схему: все запросы пишутся в промежуточный XML-файл с именем типа НомерЗапроса_ДатаВремя.xml, если шлюз вернул успех - файл удаляется. В случае какой-либо ошибки у нас остается готовый файл с запросом, который можно как быстро изучить самому, так и предоставить в поддержку. Аналогичным образом поступаем и с ответами шлюза. Т.е. в случае какой-либо ошибки у нас в рабочей папке находятся файлы запроса и ответа.
starjevschik; +1
17. starjevschik 13.09.18 13:36 Сейчас в теме
(16) спасибо, может пригодится. Хорошая идея. Здесь-то вряд ли, а в более ответственных делах вполне жизненно.
+
18. oldcopy 173 13.09.18 15:27 Сейчас в теме
(17) Основной смысл этой идеи в том, что полная расшифровка ответа шлюза избыточна, но иногда эта самая информация может быть нужна. В нашем случае шлюз выдает код результата и код состояния плюс некоторый набор дополнительных полей, который может меняться в разных сочетаниях кода результата и состояния.

Скажем кассиру расшифровываются только явные ошибки: "Неправильный номер абонента", "Недопустимая сумма", "Платежи на данного получателя временно не проводятся" и т.д. Даже если платеж стал в очередь кассиру все равно показываем "Успех". Все остальное "Ошибка, позвоните в офис/техподдержку".

Операторам в офисе показываем больше, здесь, например, будут статусы "В очереди, нет свободных средств на счету", "Ошибка, шлюз провайдера временно недоступен, позвоните туда-то", т.е. расшифровываем те ситуации, которые в пределах их компетенции. Остальное глушится сообщением "Ошибка, позвоните в техподдержку", которая уже и изучает эти файлы. Для поддержки это вообще идеальный вариант, так как видно всё, что отправили, что получили, все допполя и т.п.
+
19. uno-c 235 13.09.18 18:30 Сейчас в теме
Fiddler еще очень удобен - перехватывает трафик, в том числе https. Вот например, что он показывает по запросу на веб-сервис службы доставки КCЭ:

POST http://lk-test.cse.ru/1c/ws/Web1C.1cws HTTP/1.1
Proxy-Authorization: NTLM TlRMTVNTUAABAAAAt7II4gkACQArAAAAAwADACgAAAAGAbEdAAAAD05PVldP­UktHUk9VUA==
User-Agent: 1C+Enterprise/8.2
Host: lk-test.cse.ru
Accept: */*
Connection: Keep-Alive
SOAPAction: "http://www.cargo3.ru#WebService:GetReferenceData"
Content-Type: text/xml; charset=utf-8
Content-Length: 946

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body> <m:GetReferenceData xmlns:m="http://www.cargo3.ru">
<m:login xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">test</m:login>
<m:password xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2016</m:password>
<m:parameters xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<m:Key>Parameters</m:Key>
<m:List>
<m:Key>Reference</m:Key>
<m:Value xsi:type="xs:string">Geography</m:Value>
<m:ValueType>string</m:ValueType>
</m:List>
<m:List>
<m:Key>Search</m:Key>
<m:Value xsi:type="xs:string">Санкт-Петербург г</m:Value>
<m:ValueType>string</m:ValueType>
</m:List>
</m:parameters>
</m:GetReferenceData></soap:Body>
</soap:Envelope>
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот