Отправка soap запроса из 1С на soap-сервер
Ребята, всем привет!
Прошу помощи.
Отправляю soap-запрос из 1С на сервер, в результате получаю ответ от сервера с кодом состояния 301. Самостоятельно разобраться, что я делаю не так, не получается.
Прошу помощи.
Отправляю soap-запрос из 1С на сервер, в результате получаю ответ от сервера с кодом состояния 301. Самостоятельно разобраться, что я делаю не так, не получается.
Хост = "ekonika-test.verme.ru";
Логин = "...";
Пароль = "...";
HTTPСоединение = Новый HTTPСоединение(Хост, , Логин, Пароль, , 100, Новый ЗащищенноеСоединениеOpenSSL());
ЗаголовокЗапросаHTTP = Новый Соответствие();
ЗаголовокЗапросаHTTP.Вставить("Content-Type", "text/xml; charset=utf-8");
HTTPЗапрос = Новый HTTPЗапрос("/api/soap", ЗаголовокЗапросаHTTP);
Результат = HTTPСоединение.Получить(HTTPЗапрос); //уже здесь код возврата результата 301
employeeId = СтрСотрудник.employeeId;
name = СтрСотрудник.name;
scheduleMode=СтрСотрудник.scheduleMode;
dismissialDate = СтрСотрудник.dismissialDate;
recieptDate=СтрСотрудник.recieptDate;
jobcode=СтрСотрудник.jobcode;
depcode=СтрСотрудник.depcode;
DepIsPrimary=СтрСотрудник.DepIsPrimary;
disableHrDoc=СтрСотрудник.disableHrDoc;
disableRuleHistory=СтрСотрудник.disableRuleHistory;
disableSkillHistory=СтрСотрудник.disableSkillHistory;
timestamp=СтрСотрудник.timestamp;
СтрокаXML = "
|<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:soap=""http://ekonika-test.verme.ru/wfmportal/api/soap"">
| <soapenv:Header>
| <soap:authData>
| <soap:login>"+Логин+"</soap:login>
| <soap:password>"+Пароль+"</soap:password>
| </soap:authData>
| </soapenv:Header>
| <soapenv:Body>
| <soap:setEmployee>
| <soap:employeeId>"+employeeId+"</soap:employeeId>
|<soap:employee>
| <soap:name>"+name+"</soap:name>
| <soap:scheduleMode>"+scheduleMode+"</soap:scheduleMode>
| <soap:recieptDate>"+recieptDate+"</soap:recieptDate>
| <soap:sendSms>false</soap:sendSms>
| <soap:sendEmail>false</soap:sendEmail>
|</soap:employee>
|<soap:jobList>
| <soap:jobHistory>
| <soap:job>
|<soap:code>"+jobcode+"</soap:code>
| </soap:job>
| <soap:isPrimary>true</soap:isPrimary>
| <soap:start>2018-08-01</soap:start>
| </soap:jobHistory>
|</soap:jobList>
|<soap:depList>
| <soap:depHistory>
| <soap:dep>
|<soap:code>"+depcode+"</soap:code>
| </soap:dep>
| <soap:isPrimary>true</soap:isPrimary>
| <soap:start>"+recieptDate+"</soap:start>
| </soap:depHistory>
|</soap:depList>
| <soap:disableHrDoc>true</soap:disableHrDoc>
| <soap:disableRuleHistory>true</soap:disableRuleHistory>
| <soap:disableSkillHistory>true</soap:disableSkillHistory>
| <soap:timestamp>"+timestamp+"</soap:timestamp>
| </soap:setEmployee>
| </soapenv:Body>";
//|</soapenv:Envelope>";
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаXML);
Результат = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Ответ = Результат.ПолучитьТелоКакСтроку();
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) У меня вот так возвращается с логином/паролем по умолчанию - написал в личку
HTTP/1.1 500 Internal Server Error
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 27 Sep 2018 13:57:19 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 327
Connection: keep-alive
Vary: Accept-Encoding
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
X-Frame-Options: DENY
Показать
(6) вот после POST
<?xml version='1.0' encoding='UTF-8'?>
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/">
<soap11env:Body>
<soap11env:Fault>
<faultcode>soap11env:Client.XMLSyntaxError</faultcode>
<faultstring>None (line 0)</faultstring>
<faultactor></faultactor>
</soap11env:Fault>
</soap11env:Body>
</soap11env:Envelope>
Показать
Может так нужно?
HTTPЗапрос = Новый HTTPЗапрос("/api.php?action=direct&subno=" + НомерТелефонаДляПередачиВЗапрос);
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
Новый СертификатыУдостоверяющихЦентровWindows());
HTTPСоединение = Новый HTTPСоединение("potoksms.ru", 443, , , , , ЗащищенноеСоединение);
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
Возврат HTTPОтвет.ПолучитьТелоКакСтроку();
Показать
Строку
заменила на
Теперь в ответе код состояния 500, описание ошибки:
<?xml version='1.0' encoding='UTF-8'?>
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/"><soap11env:Body><soap11env:Fault><faultcode>soap11env:Client.SchemaValidationError</faultcode><faultstring>:10:0:ERROR:SCHEMASV:SCHEMAV_CVC_ELT_1: Element '{http://ekonika-test.verme.ru/wfmportal/api/soap }setEmployee': No matching global declaration available for the validation root.</faultstring><faultactor></faultactor></soap11env:Fault></soap11env:Body></soap11env:Envelope>
HTTPЗапрос = Новый HTTPЗапрос("/api/soap", ЗаголовокЗапросаHTTP);
заменила на
HTTPЗапрос = Новый HTTPЗапрос("/api/soap/", ЗаголовокЗапросаHTTP);
Теперь в ответе код состояния 500, описание ошибки:
<?xml version='1.0' encoding='UTF-8'?>
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/"><soap11env:Body><soap11env:Fault><faultcode>soap11env:Client.SchemaValidationError</faultcode><faultstring>:10:0:ERROR:SCHEMASV:SCHEMAV_CVC_ELT_1: Element '{
(15)Не совсем понятно, что именно вы хотите получить в рамках данного обсуждения.
Доступ к сервису у вас есть.
Что вы отправляете - не понятно, возможно уже 10 раз текст soap запроса изменен был.
Если он тот же, что в 1 сообщении, то у вас кривой xml - закомментирована строка
//|</soapenv:Envelope>";
и верхний тег получается не закрыт.
Доступ к сервису у вас есть.
Что вы отправляете - не понятно, возможно уже 10 раз текст soap запроса изменен был.
Если он тот же, что в 1 сообщении, то у вас кривой xml - закомментирована строка
//|</soapenv:Envelope>";
и верхний тег получается не закрыт.
отрываю браузер, пишу адрес ресурса, выдает:
так пишет же "вы должны использовать метод POST", а у вас первым идет GET
<soap11env:Envelope><soap11env:Body><soap11env:Fault><faultcode>soap11env:Client.RequestNotAllowed</faultcode><faultstring>You must issue a POST request with the Content-Type header properly set.</faultstring><faultactor/></soap11env:Fault></soap11env:Body></soap11env:Envelope>
так пишет же "вы должны использовать метод POST", а у вас первым идет GET
работает же (правда 500 код ответа) но запрос то у меня без правильных данных:
И ответ в теле ответа:
HTTPСоединение = Новый HTTPСоединение("ekonika-test.verme.ru", , , , , , Новый ЗащищенноеСоединениеOpenSSL);
ЗаголовокЗапросаHTTP = Новый Соответствие();
ЗаголовокЗапросаHTTP.Вставить("Content-Type", "text/xml; charset=utf-8");
HTTPЗапрос = Новый HTTPЗапрос("/api/soap/", ЗаголовокЗапросаHTTP);
HTTPЗапрос.УстановитьТелоИзСтроки("
|<soap11env:Envelope xmlns:soap11env=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:soap=""http://ekonika-test.verme.ru/wfmportal/api/soap"">
| <soap11env:Header>
| <soap:authData>
| <soap:login>"+1111+"</soap:login>
| <soap:password>"+1111+"</soap:password>
| </soap:authData>
| </soap11env:Header>
|<soap11env:Body>
| <soap:setEmployee>
| <soap:employeeId>"+1224234+"</soap:employeeId>
|<soap:employee>
| <soap:name>Тфьу</soap:name>
| <soap:scheduleMode>1</soap:scheduleMode>
| <soap:recieptDate>2018-08-01</soap:recieptDate>
| <soap:sendSms>false</soap:sendSms>
| <soap:sendEmail>false</soap:sendEmail>
|</soap:employee>
|<soap:jobList>
| <soap:jobHistory>
| <soap:job>
|<soap:code>0</soap:code>
| </soap:job>
| <soap:isPrimary>true</soap:isPrimary>
| <soap:start>2018-08-01</soap:start>
| </soap:jobHistory>
|</soap:jobList>
|<soap:depList>
| <soap:depHistory>
| <soap:dep>
|<soap:code>12</soap:code>
| </soap:dep>
| <soap:isPrimary>true</soap:isPrimary>
| <soap:start>2018-08-01</soap:start>
| </soap:depHistory>
|</soap:depList>
| <soap:disableHrDoc>true</soap:disableHrDoc>
| <soap:disableRuleHistory>true</soap:disableRuleHistory>
| <soap:disableSkillHistory>true</soap:disableSkillHistory>
| <soap:timestamp>2018-08-01</soap:timestamp>
| </soap:setEmployee>
| </soap11env:Body>
|</soap11env:Envelope>");
Результат = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
ПоказатьИ ответ в теле ответа:
<?xml version='1.0' encoding='UTF-8'?>
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/"><soap11env:Body><soap11env:Fault><faultcode>soap11env:Client.SchemaValidationError</faultcode><faultstring>:10:0:ERROR:SCHEMASV:SCHEMAV_CVC_ELT_1: Element '{http://ekonika-test.verme.ru/wfmportal/api/soap }setEmployee': No matching global declaration available for the validation root.</faultstring><faultactor></faultactor></soap11env:Fault></soap11env:Body></soap11env:Envelope>
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот