|
использование веб-сервисов в 1С с процедурой авторизации | ☑ | ||
---|---|---|---|---|
0
manaxov83
12.06.14
✎
20:11
|
Всем привет, нужна помощь использования веб-сервисов в 1С.
Есть внешний веб сервис, в конфигураторе добавлил объект ws-ссылка, все ОК, получил дерево доступных методов и модель данных(логин и пароль не требовал). Создаю прокси: Прокси = WSСсылки.Service.СоздатьWSПрокси(URIПространстваИмен,ИмяСервиса,ИмяПорта);//все ОК У каждого пользователя этого веб-сервиса есть учетка, для аутентификации есть метод Authmethod. Рез=Прокси.Authmethod(Логин,Пароль);// Метод возвращает строку "true"- из описания все ОК, аутентификация прошла. Далее вызываю нужный мне метод: Прокси.FindCompanyByCode(ИНН,"",0,Рез,Данные); В переменной "рез" получаю строку "Authentication error". Вот тут то и запара, как будто аутентификации в системе не было. Есть пример использования этого сервиса на C#, и прога на C# с моими учетными данными работает: string result; string resultXml; using (ifaxWSReference.iFaxWebService service = new ifaxWSReference.iFaxWebService()) { service.Url = "url"; service.CookieContainer = new System.Net.CookieContainer(); result = service.Authmethod("<Login>", "<Password>"); result = service.FindCompanyByCode("1833034704", "", 0, out resultXml); service.End(); } Console.WriteLine("Result: " + result); Console.WriteLine("Result XML: " + resultXml); Интересна вот эта строка: service.CookieContainer = new System.Net.CookieContainer(); Зачем она? Есть ли что то подобное в 1С? Может быть это и есть ключ к моему решению, WS не запоминает что была утентификацию). Так же пробывал пихать логин и пароль в поля прокси, но думаю что это чуть другое: Прокси.Пользователь = Логин; Прокси.Пароль = Пароль; С сервисами работаю первый раз, так что прошу сильно не пинать)). |
|||
1
dj_serega
12.06.14
✎
20:15
|
а что за ""Authentication error"."? это тебе сервер возвращает?
|
|||
2
oleg_km
12.06.14
✎
20:30
|
Эту строку:
service.CookieContainer = new System.Net.CookieContainer(); можно проверить Fiddler'ом. Да и вообще сравни с фиддлером свою прогу на шарпе и 1С |
|||
3
manaxov83
12.06.14
✎
22:16
|
а что за ""Authentication error"."? это тебе сервер возвращает?
Да, это результат выполнения процедуры FindCompanyByCode записываемый в выходной параметр Рез. Эту строку: service.CookieContainer = new System.Net.CookieContainer(); можно проверить Fiddler'ом. Да и вообще сравни с фиддлером свою прогу на шарпе и 1С Что такое Fiddler? |
|||
4
Лефмихалыч
12.06.14
✎
22:51
|
(0) защищенное соединение используется? Тось сервер по https работает?
|
|||
5
Лефмихалыч
12.06.14
✎
22:51
|
не сервер, а сервис
|
|||
6
Лефмихалыч
12.06.14
✎
22:58
|
короче, пока автор отдупляется, напишу, - зачем спросил. Был у нас при переходе на 8.3.3 забавный случай: стрелялся, стало быть, некий помещ... кхмм... Простите, в 8.3.3 у WS Определение и WSПрокси появился последний необязательный параметр ЗащищенноеСоединение. Так вот к вебсервисам, раздаваемым по https, которые замечательно работали с 8.2, пропал коннект по причине неправильной авторизации. Эксперименты показали, что при испоьзовании защищенного соединения, в 8.3.3 нужно в конструкторе в этот последний параметр передавать
Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено ) я не знаю, почему не работает с значением по умолчанию (параметр, к слову, не обязательный), но вот не работает. Может кому пригодится инфа... |
|||
7
manaxov83
12.06.14
✎
23:03
|
Нет, работает по http, но все равно ща попробую поиграться с этим параметром. Спасибо.
|
|||
8
angro
12.06.14
✎
23:17
|
куки 8-ка не поддерживает
|
|||
9
angro
12.06.14
✎
23:18
|
у тебя авторизация по ходу в куках хранится, а 8-ка их не поддерживает
|
|||
10
manaxov83
12.06.14
✎
23:21
|
(9) печально как то, а как это можно обойти? есть идеи?
|
|||
11
angro
12.06.14
✎
23:23
|
в FindCompanyByCode добавь пользователя и пароль, в нем и проверяй
|
|||
12
manaxov83
12.06.14
✎
23:27
|
(11) Этот сервис предоставляет сторонняя компания, у меня нет к нему доступа((
|
|||
13
Лефмихалыч
12.06.14
✎
23:29
|
как вариант - зафигачить у себя прокси-сервис не на 1С, который будет уметь авторизоваться там по кукам, а тут - авторизовать без куков.
Но это, наверное, слишком хтонично... |
|||
14
manaxov83
12.06.14
✎
23:32
|
(13) ну тогда уж лучше обертку на C# написать ввиде ВК например, геморно но вариант. Может че нить попроще можно придумать.
|
|||
15
angro
12.06.14
✎
23:36
|
как-то же их в 7-ке использовали, наверняка или через ие или ещё через что-то подобное можно
|
|||
16
Лефмихалыч
13.06.14
✎
00:03
|
можно еще через msscriptcontrol и каким-нить жабаскриптом... яхз...
|
|||
17
catena
13.06.14
✎
07:07
|
У меня работает через
Прокси.Пользователь = Логин; Прокси.Пароль = Пароль; Но это к 1С-овским сервисам. К внешнему сервису когда не удалось (не помню уже по какой причине) создать wsсылку, подключаюсь через COMОбъект("Msxml2.XMLHTTP"). Неудобно, приходится запрос собирать, но работает стабильно. |
|||
18
manaxov83
13.06.14
✎
08:44
|
(17) кинь примерчик плз.
|
|||
19
catena
13.06.14
✎
09:50
|
(18)Второго?
oXMLHTTP = Новый COMОбъект("Msxml2.XMLHTTP"); oXMLHTTP.open(<"GET"|"POST"|...>, url, asyncFlag,user,password); reqST = "[здесь формируем хмл-ку с запросом]"; oXMLHTTP.send(reqST); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(oXMLHTTP.responseText); структурныйТип = ФабрикаXDTO.Тип("URI пространства имен", "Имя запрашиваемого типа"); Значение = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, структурныйТип); Ну и дальше читаем ответ. |
|||
20
catena
13.06.14
✎
10:18
|
Вот еще ссылка, я по ней разбиралась, в принципе там достаточно информации:
wiki:XMLHttpRequest |
|||
21
manaxov83
13.06.14
✎
10:33
|
(20) (19) Спасибо, посмотрю
|
|||
22
manaxov83
15.06.14
✎
12:52
|
(19)
"reqST = "[здесь формируем хмл-ку с запросом]"" а примерчик запроса ХМЛ можешь кинуть, плз.? |
|||
23
manaxov83
15.06.14
✎
21:05
|
Все получилось, большое спасибо catena за идею, Msxml2.XMLHTTP рулит!!! Действительно фишка авторизации данного сервиса в куках, жаль что через ws-ссылки куки не работают, придется морочиться с запросами XMLHTTP.
|
|||
24
Serginio1
15.06.14
✎
21:36
|
Можешь заморочиться с этим
v8: v8: Использование сборок .NET в 1С 7.x и 8.x http://files.rsdn.ru/19608/FilesForNetObjectToIDispatch.zip |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |