![]() |
|
Передача xml на сайт | ☑ | ||
---|---|---|---|---|
0
HamyaG
16.07.19
✎
15:29
|
Суть проблемы в следующем, на входе веб сервис ждет xml, как только не изгалялся, но отправить не могу, формирую xml файл, если потом сделать:
ЧтениеXML = Новый ТекстовыйДокумент; ЧтениеXML.Прочитать(ПутьКФайлу,"UTF-8"); ДанныеДляОтправки = ЧтениеXML.ПолучитьТекст(); получаем строку формата xml, но сайт ее не принимает, т.к. считает это CDATA и формат как бы уже не тот. Пробовал отправлять двоичные данные, засовывал в Base64 возвращается - несоответствие типов, ну и назрел вопрос - что этой скотине надо? в описании написано, что именно xml. Через SoapUI файл залетает, т.е. в самой структуре ошибок нет. Всем буду благодарен за подсказки) |
|||
1
AlexTim03
16.07.19
✎
15:32
|
xml - это та же строка.
Покажи, как делаешь вызов веб-сервиса. Должно быть что-то типа этого: Определение = Новый WSОпределения("......"); Прокси = Новый WSПрокси(Определение, "...", "...", "..."); ТипПараметра = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"); ЗначениеПараметра = ФабрикаXDTO.Создать(ТипПараметра, СтрокаXML); /////Вот тут ты преобразуешь xml Результат = Прокси.getReports(ЗначениеПараметра); |
|||
2
mikecool
16.07.19
✎
15:38
|
емнип, если отправка через post - в заголовке нужно указать правильный тип содержимого
|
|||
3
Garykom
гуру
16.07.19
✎
15:39
|
HTTPЗапрос (HTTPRequest)
УстановитьИмяФайлаТела (SetBodyFileName) Синтаксис: УстановитьИмяФайлаТела(<ПутьКФайлу>) Параметры: <ПутьКФайлу> (обязательный) Тип: Строка. Указывает путь к файлу. Описание: Устанавливает имя файла, из которого будет прочитано тело запроса. Доступность: Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Примечание: В момент вызова метода файл открывается на чтение, но само чтение происходит только в момент отправки запроса. |
|||
4
Garykom
гуру
16.07.19
✎
15:39
|
И да СП все же купи
|
|||
5
HamyaG
16.07.19
✎
15:40
|
(1) Определения = Новый WSОпределения(МестоположениеWSDL);
Прокси = Новый WSПрокси(Определения, ПространстваИменСервиса, ИмяСервиса, ИмяТочкиПодключения); РезультатОтправки = Прокси.generateCoupons(ДанныеДляОтправки); |
|||
6
HamyaG
16.07.19
✎
15:40
|
(2) не через post
|
|||
7
HamyaG
16.07.19
✎
15:42
|
(4) учту, но HTTPЗапрос ко мне отношения не имеет
|
|||
8
Garykom
гуру
16.07.19
✎
15:43
|
(7) Гыгы
|
|||
9
AlexTim03
16.07.19
✎
15:43
|
(5)
ДанныеДляОтправки - надо преобразовать. Попробуй как у меня. Или пришли описание, что там веб-сервис ждет. Понятно, что ему нужен xml, но ты это должен "сказать" языком web-сервиса. Я это и делаю этими строками: ТипПараметра = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "string"); ЗначениеПараметра = ФабрикаXDTO.Создать(ТипПараметра, СтрокаXML); |
|||
10
HamyaG
16.07.19
✎
15:46
|
(9) сейчас попробую
в описании к сервису написано - Принимаемые параметры web:generateCoupons XML Список категорий несерийных купонов |
|||
11
Garykom
гуру
16.07.19
✎
15:49
|
Изучить
https://habr.com/ru/post/148658/ http://fixin.com.ru/articles/1s_web_services/article.htm И да веб-сервисы чаще всего работают поверх http, поэтому через (3) вполне можно |
|||
12
HamyaG
16.07.19
✎
15:50
|
(9) Благодарю, именно этих двух строк и не хватало)) пробился))
|
|||
13
Garykom
гуру
16.07.19
✎
15:52
|
По сути wsdl/soap это примерно как через COM работать с другой базой 1С, только простые типы можно напрямую передавать, сложные надо "обертывать"
|
|||
14
HamyaG
16.07.19
✎
15:53
|
(11) я не говорю, что это не возможно, у меня одна функция подключения и отправки в несколько точек подключения для этого сайта и что то ваять лишь для одной точки - смысла нет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |