|
SOAP-запрос по методу POST | ☑ | ||
---|---|---|---|---|
0
Night_Wolf
10.07.14
✎
15:16
|
Пытаюсь отправить SOAP-запрос, код процедуры такой:
ssl = Новый ЗащищенноеСоединениеOpenSSL; НТТР = Новый HTTPСоединение("mcommunicator.ru",,,,,5,ssl); ФайлЗапроса = ПолучитьИмяВременногоФайла(); НомерАбонента = "7923190хххх"; ТекстСообщения = "Проверка отправки SOAP из 1С прошла успешно!"; ТекстSOAP = " |POST /M2M/m2m_api.asmx HTTP/1.1 |Host: mcommunicator.ru |Content-Type: text/xml; charset=utf-8 |Content-Length: length |SOAPAction: ""http://mcommunicator.ru/M2M/SendMessage"" | |<?xml version=""1.0"" encoding=""utf-8""?> |<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""> |<soap:Body> | <SendMessage xmlns=""http://mcommunicator.ru/M2M""> | <msid>"+НомерАбонента+"</msid> | <message>"+ТекстСообщения+"</message> | <naming></naming> | <login>"+Логин+"</login> | <password>"+Пароль+"</password> | </SendMessage> |</soap:Body> |</soap:Envelope>"; ТекстSOAP = СокрЛП(ТекстSOAP); ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.УстановитьТекст(ТекстSOAP); ТекстовыйФайл.Записать(ФайлЗапроса,КодировкаТекста.ANSI); ФайлРезультата = ПолучитьИмяВременногоФайла(); ЗаголовокНТТР = Новый Соответствие(); ФайлОтправки = Новый Файл(ФайлЗапроса); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); //ЗаголовокНТТР.Вставить("POST","/M2M/m2m_api.asmx HTTP/1.1"); //ЗаголовокНТТР.Вставить("HOST","mcomunicator.ru"); ЗаголовокНТТР.Вставить("Content-Type","text/xml; charset=utf-8"); ЗаголовокНТТР.Вставить("Content-Lenght",РазмерФайлаОтправки); НТТР.ОтправитьДляОбработки(ФайлЗапроса,"M2M/m2m_api.asmx?op=SendMessage",ФайлРезультата,ЗаголовокНТТР); // Получаем ответ в виде строки ТекстовыйФайлОтвет = Новый ТекстовыйДокумент; ТекстовыйФайлОтвет.Прочитать(ФайлРезультата,КодировкаТекста.UTF8); СтрокаРезультат = ТекстовыйФайлОтвет.ПолучитьТекст(); Сам формат XML-Файла, который должен быть отправлен такой: POST /M2M/m2m_api.asmx HTTP/1.1 Host: mcommunicator.ru Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://mcommunicator.ru/M2M/SendMessage" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <SendMessage xmlns="http://mcommunicator.ru/M2M"> <msid>string</msid> <message>string</message> <naming>string</naming> <login>string</login> <password>string</password> </SendMessage> </soap:Body> </soap:Envelope> Непонятны 2 вопроса: 1. Как записать length в файл, если я не знаю размер файла, пока не запишу его на диск 2. При отправке файла выдает ошибку: {Форма.Форма.Форма(46)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки) НТТР.ОтправитьДляОбработки(ФайлЗапроса,"M2M/m2m_api.asmx?op=SendMessage",ФайлРезультата,ЗаголовокНТТР); по причине: Ошибка при выполнении файловой операции 'M2M/m2m_api.asmx?op=SendMessage' по причине: Ошибка работы с Интернет: внутренняя ошибка сервера (500). <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Receiver</soap:Value></soap:Code><soap:Reason><soap:Text xml:lang="en">Server was unable to process request. ---> Data at the root level is invalid. Line 1, position 1.</soap:Text></soap:Reason><soap:Detail /></soap:Fault></soap:Body></soap:Envelope> по причине: Ошибка работы с Интернет: внутренняя ошибка сервера (500) То есть как я понимаю - процедура запускается, но видит ошибку в строке 1, позиции 1. Но как там может быть ошибка? Подскажите кто знает, что я не так делаю? |
|||
1
Fragster
гуру
10.07.14
✎
15:18
|
а что, стандартный механизм вебсервисов не устраивает?
|
|||
2
Night_Wolf
10.07.14
✎
15:19
|
А веб-сервис же не мой. Он МТС-овский. Я просто пытаюсь по нему сделать рассылку смс-сообщений нашим клиентам.
|
|||
3
Fragster
гуру
10.07.14
✎
15:20
|
(2) я понимаю. но что, стандартный механизм 1с не работает? не публикации, а вызова вебсервисов.
|
|||
4
Night_Wolf
10.07.14
✎
15:22
|
(3) - А можно подробнее - что за стандартный механизм? Я просто писал веб-сервисы в 1с в конфигурации, пакетыXDTO и сами процедуры, но сторонние никогда не вызывал. Или ссылку куда почитать.
|
|||
5
ale-sarin
10.07.14
✎
15:22
|
(0) Я для сообщений с МТС из БСП все взял. И никакой хреноты не писал.
|
|||
6
ale-sarin
10.07.14
✎
15:22
|
(4) В БСП.
|
|||
7
Night_Wolf
10.07.14
✎
15:25
|
(4)Возможно сейчас тупость спрошу, но БСП - это что такое?
|
|||
8
Fragster
гуру
10.07.14
✎
15:25
|
простейший вариант какой-то такой:
СсылкаНаОпределение = "тутассылканаwsdl"; Определение = Новый WSОпределения(СсылкаНаОпределение); Сервис = Определение.Сервисы[0]; ТочкаПодключения = Сервис.ТочкиПодключения[0]; Прокси = Новый WSПрокси(Определение, Сервис.URIПространстваИмен, Сервис.Имя, ТочкаПодключения.Имя); Фабрика = Определение.ФабрикаXDTO; Результат = Прокси.Функция(СН); фабрика нужна чтобы параметры непримитивных типов отправлять. |
|||
9
Fragster
гуру
10.07.14
✎
15:26
|
(7) библиотека стандартных подсистем
|
|||
10
ale-sarin
10.07.14
✎
15:27
|
||||
11
Night_Wolf
10.07.14
✎
15:27
|
(6)(9) Ясно, но мне не поможет. У меня нестандартная конфигурация.
|
|||
12
ale-sarin
10.07.14
✎
15:28
|
(11) Блин, не дурите.
Посмотрите, как там сделано. Куски кода возьмите. |
|||
13
Night_Wolf
10.07.14
✎
15:28
|
Разобрался! Вот эти 5 строк в файле первые не нужны были:
POST /M2M/m2m_api.asmx HTTP/1.1 Host: mcommunicator.ru Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://mcommunicator.ru/M2M/SendMessage"" target="_blank" rel="nofollow" class="extralink">http://mcommunicator.ru/M2M/SendMessage"; Теперь пишет ошибку, но уже что пароль некорректный. Это буду завтра решать. Спасибо всем! |
|||
14
Fragster
гуру
10.07.14
✎
15:31
|
(13) не мучайся ты, попробуй сначала (8)
У тебя будет что-то типа Результат = Прокси.SendMessage(ид, сообщений, нейминг, логин, пароль) |
|||
15
Бешенный
10.07.14
✎
15:34
|
(14) Не мешай человеку. Пусть через некоторое время он сделает для себя открытие ))
|
|||
16
Infsams654
10.07.14
✎
16:08
|
(0) а зачем вообще файлом, если сейчас уже есть HTTPЗапрос
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |