|
Как отправить XML на внешний веб-сервис? | ☑ | ||
---|---|---|---|---|
0
Shaman1C
20.03.17
✎
14:18
|
По определенному событию, данные собираются в 1С и должны в формате XML уйти на внешний веб-сервис. Не файл XML, а просто XML.
Я могу создать XDTO-пакеты, чтобы получить XML. Но как его отправить на веб-сервис внешний я не понимаю, инфы в инете совсем нет. Подскажите как это сделать? киньте пример кода или реально толковые ссылки а не просто запросы с гугла и т.п. |
|||
1
DrShad
20.03.17
✎
14:21
|
POST, GET запрос
|
|||
2
DrShad
20.03.17
✎
14:27
|
да и сам XML не обязательно в файл сохранять
|
|||
3
Shaman1C
20.03.17
✎
14:28
|
Никто не знает чтоли?
|
|||
4
Джинн
20.03.17
✎
14:33
|
(3) В чем проблема переслать файл?
|
|||
5
FIXXXL
20.03.17
✎
14:35
|
ДанныеВыгрузки = Новый ЗаписьXML
|
|||
6
Shaman1C
20.03.17
✎
14:57
|
Странно что никто не знает...
|
|||
7
DrShad
20.03.17
✎
14:58
|
а что мы должны еще знать? тебе уже все рассказали
|
|||
8
mehfk
20.03.17
✎
15:01
|
(6) Зелепукин Петр Сергеевич из станицы Залупянская Краснодарского края знает.
|
|||
9
Юрий Лазаренко
20.03.17
✎
15:10
|
ИмяВебСервиса = "https://domain.ru/basename/ws/webservicename.1cws?wsdl";
ПользовательВебСервиса = "<ЛогинПользователя>"; ПарольВебСервиса = "ПарольПользователя"; WS_Определение = Новый WSОпределения(ИмяВебСервиса, ПользовательВебСервиса, ПарольВебСервиса); Прокси = Новый WSПрокси(WS_Определение, "http://www.domain.ru/webservice", "ServiseName", "ServiseNameSoap"); Прокси.Пользователь = ПользовательВебСервиса; Прокси.Пароль = ПарольВебСервиса; МойXML = "<Тут должен быть текст твоего XML>"; Результат = Прокси.ИмяМетодаВебСервиса(МойXML); |
|||
10
Shaman1C
20.03.17
✎
18:08
|
Попытка
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.SetTimeouts(60000,60000,60000,60000); //таймауты в милисекундах, выставляю 1 минуту Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; URL = "https://gdfgdfgdfgdfgdf"; Параметры = "xml=" + СтрокаXML; Попытка WinHttp.Open("POST", URL, 0); WinHttp.SetCredentials("dfgdfgdfgdf","sdfsdfsd",0); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; WinHttp.SetRequestHeader("Content-type", "application/x-www-form-urlencoded"); Попытка WinHttp.Send(Параметры); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; WinHttp.WaitForResponse(); Так прокатит или нет? |
|||
11
Юрий Лазаренко
20.03.17
✎
18:14
|
(10) Так надо на веб-сервис отправить, или на http-сервис?
|
|||
12
Юрий Лазаренко
20.03.17
✎
18:20
|
(10) Если на http-сервис, то так не прокатит, потому что xml в параметре запроса
Параметры = "xml=" + СтрокаXML; не уйдет и обрежется на служебных символах. |
|||
13
HomoAlbus
20.03.17
✎
18:26
|
Сначала получаешь определение сервиса, на который тебе надо отправить данные. Потом создаешь прокси. Фабрикой сервиса делаешь объекты, которые будешь отправлять и все.
|
|||
14
Shaman1C
21.03.17
✎
09:28
|
(11) на веб-сервис надо данные скидывать.
|
|||
15
Shaman1C
21.03.17
✎
09:53
|
(9)
ЗащищенноеСоединениеOpenSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows); ИмяВебСервиса = "https://ghdgdfgdfgdfgdfgdf/Inbox.asmx?WSDL"; WS_Определение = Новый WSОпределения(ИмяВебСервиса,,,,,ЗащищенноеСоединениеOpenSSL); ВСДанные = WS_Определение.Сервисы[0]; Прокси = Новый WSПрокси(WS_Определение, ВСДанные.URIПространстваИмен, ВСДанные.Имя, ВСДанные.ТочкиПодключения[0].Имя,,,ЗащищенноеСоединениеOpenSSL); Вот так идет, но вот тут непонятно: Результат = Прокси.ИмяМетодаВебСервиса(МойXML); Если я делаю так, то говорит что такого поля не обнаружено. Что же тут должно быть то? |
|||
16
Юрий Лазаренко
21.03.17
✎
09:54
|
(15) Значит у веб-сервиса нет метода с именем "ИмяМетодаВебСервиса", нужно вместо него подставить то, которое есть.
|
|||
17
Shaman1C
21.03.17
✎
09:57
|
(16) да я это понял, я подставляю и выдает что такого поля не обнаружено.
|
|||
18
Aceforg
21.03.17
✎
10:02
|
Из своего проекта, стандартный WSОпределения не проканал
Функция ИнициализироватьСоединие(); Попытка xmlHttp = New COMОбъект("MSXML2.xmlHttp"); Адрес = "http://______"; Хост = "___"; xmlHttp.OPEN ("POST", Адрес, False); xmlHttp.setRequestHeader ("Host", Хост); xmlHttp.setRequestHeader ("Content-type", "text/xml; charset=utf-8"); Исключение Сообщить("Не удалось создать объект ""MSXML2.xmlHttp"":"+ ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; Возврат xmlHttp; КонецФункции Функция ЗапросПоНомеру(Соединение,НомерДоговора) Если Соединение = Неопределено Тогда Сообщить("Не установлено соединение"); Возврат Неопределено; КонецЕсли; DOC = New COMОбъект("MSXML2.DOMDocument"); DOC.loadXML(" |<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tem=""http://tempuri.org/""> | <soapenv:Header/> | <soapenv:Body> | </soapenv:Body> |</soapenv:Envelope>"); Соединение.setRequestHeader("SOAPAction","http://___"); Попытка Соединение.SEND(DOC); Исключение Сообщить("Ошибка при отправке запроса данных:" + ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; Результат = Соединение.statusText; Если Результат <> "OK" Тогда Сообщить("Ошибка запроса данных:" + Строка(Результат)); Возврат Неопределено; КонецЕсли; DOCToSave = New COMОбъект("MSXML2.DOMDocument"); DOCToSave.loadXML(Соединение.responseText); Если DOCToSave.parseError.errorCode <> 0 Тогда Сообщить("Ошибка разбора XML результата: " + DOC.parseError.reason); Возврат Неопределено; КонецЕсли; Возврат DOCToSave.xml; КонецФункции |
|||
19
Shaman1C
21.03.17
✎
10:17
|
Прокси.ФабрикаXDTO.Пакеты.Получить(ВСДанные.URIПространстваИмен).Получить("ИмяМетодаВебСервиса")
Вот так я могу получить веб сервис, но как в него передать ХМл вопрос остается открытым |
|||
20
Мимохожий Однако
21.03.17
✎
10:21
|
(19) Хозяева веб-сервиса информацию с примерами держат в секрете?
|
|||
21
Жан Пердежон
21.03.17
✎
10:23
|
(19) почитай ну хоть что-нибудь про веб-сервисы и xdto
|
|||
22
Shaman1C
21.03.17
✎
10:24
|
(20) отмаличиваются
(21) ой бедный ты мой, прочитал уже дофига всего, мало нужной инфы |
|||
23
Мимохожий Однако
21.03.17
✎
10:25
|
(22) Странно. Ты же не хакер.
PS. Сбавь эмоции )) |
|||
24
Shaman1C
21.03.17
✎
10:39
|
(16)
WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра); WSПараметр.address = "Адрес"; WSПараметр.phone = "Телефон"; WSПараметр.fax = "Факс"; Вот так я получаю параметры и запихиваю туда данные. Теперь та что, как они попадут в веб-сервис? Причем это все в цикле надо делать? |
|||
25
dezss
21.03.17
✎
11:34
|
(24) Пример с ФНС смотрел (о зарегистрированных в ЕГРН налогоплательщиках)?
|
|||
26
dezss
21.03.17
✎
11:35
|
(25) + правда у них и доки по этому поводу имеются
|
|||
27
olegves
21.03.17
✎
11:35
|
(24) http://catalog.mista.ru/public/537861/
тебе, наверное, п.6 подойдет |
|||
28
olegves
21.03.17
✎
11:36
|
(27) http://catalog.mista.ru/public/537861/ - это верная ссылка
|
|||
29
dezss
21.03.17
✎
11:46
|
(26) если что, вот тут у них документация.
https://rmsp.nalog.ru/developers.html А такой код я когда-то набрасывал для проверки по ИНН/КПП и дате. Определение = Новый WSОпределения("http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl"); Прокси = Новый WSПрокси(Определение, "http://ws.unisoft", "FNSNDSCAWS2", "FNSNDSCAWS2_Port"); Запрос = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://ws.unisoft/FNSNDSCAWS2/Request", "NdsRequest2")); Контрагент = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://ws.unisoft/FNSNDSCAWS2/Request", "NdsRequest2_NP")); Контрагент.INN = Трололо; Контрагент.KPP = мКПП; Контрагент.DT = Формат(мДата, "ДФ=dd.MM.yyyy"); Запрос.NP.Добавить(Контрагент); РезультатЗапроса = Прокси.NdsRequest2(Запрос); |
|||
30
Shaman1C
21.03.17
✎
11:56
|
(29) Почему я не могу обратиться к веб-сервису через прокси через точку? таким вот образом: Прокси.NdsRequest2(Запрос).
Всегда пишут что "Поле объекта не обнаружено" |
|||
31
Бычье сердце
21.03.17
✎
11:57
|
(30)
Ты еще не отправил файл? Вторые сутки пошли. |
|||
32
Shaman1C
21.03.17
✎
12:07
|
(29) Все, разобрался с этим моментом.
|
|||
33
Shaman1C
21.03.17
✎
12:23
|
Все отсылается, всем кто помог спасибо, как же вас мало на мисте осталось... в основном клоуны и критины...
|
|||
34
Барматолог
21.03.17
✎
12:27
|
(33) Расскажи, пожалуйста, кратко - как решил
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |