|
Веб-сервис и Cookie | ☑ | ||
---|---|---|---|---|
0
serezhka
19.06.18
✎
12:26
|
Здравствуйте!
Борюсь с очередным веб-сервисом по поиску и заказу автозапчастей: http://service.autopiter.ru/price.asmx?WSDL Написал вот такой код: URL = "http://service.autopiter.ru/price.asmx?WSDL"; Определения = Новый WSОпределения(Строка(URL)); СервисWS = Новый WSПрокси(Определения ,"http://www.autopiter.ru/","Price","PriceSoap"); Authorization = СервисWS.Authorization("Логин","Пароль",true); FindCatalog = СервисWS.FindCatalog("OC47"); На последней строчке выбивает ошибку: Ошибка вызова операции сервиса: {http://www.autopiter.ru/}:Price:FindCatalog() по причине: Ошибка SOAP сервера: Превышено количество запросов к веб сервису. Вы блокированы на текущие сутки Проблема с передачей куки-контейнера, а точнее в отсутствии этой передачи. У них на сайте показан пример на ASP.NET: // Создание куки контейнера, для // передачи данных авторизации, не авторизованные пользователи не могут получить данные // от функции: FindCatalog, GetPrice,GetPriceId System.Net.CookieContainer cookCon = new CookieContainer(); //Создаем экземпляр класса прокси клиента, который использует SOAP протокол WebReference.Price w = new WebApplication2.WebReference.Price(); //w.Url должен быть: "http://service.autopiter.ru/price.asmx" //Устанавливаем куки-контейнер w.CookieContainer = cookCon; w.Timeout = 10000; Как такое сделать в 1С, помогите кто разбирается? |
|||
1
Cyberhawk
19.06.18
✎
12:28
|
Ничего такого в 1С нет. Только вручную сформированные ХТТП-заросы тебе помогут.
|
|||
2
Cyberhawk
19.06.18
✎
12:28
|
Веб-сервисы 1С - это тоже ХТТП-запросы, только формируемые и иногда частично проверяемыена валидность платформой
|
|||
3
serezhka
19.06.18
✎
12:33
|
(1) а случайно нету примера ХТТП-зароса с передачей кукиз?
|
|||
4
VS-1976
19.06.18
✎
12:33
|
HTTPСоединение + ( HTTPЗапрос + Заголовки.Вставить( "Cookie", ) возможно прокатит
|
|||
5
VS-1976
19.06.18
✎
12:35
|
Примерно так:
пСоединение = Новый HTTPСоединение( URL, , , , , , Новый ЗащищенноеСоединениеOpenSSL() ); оHTTPЗапрос = Новый HTTPЗапрос( Адрес ); пЗаголовки = оHTTPЗапрос.Заголовки; пЗаголовки.Вставить( "Cookie", ТутКуки ); оHTTPОтвет = пСоединение.Получить( оHTTPЗапрос ); |
|||
6
mistеr
19.06.18
✎
12:44
|
(0) Зачем им куки, если аутентификация в каждом запросе?
|
|||
7
Cyberhawk
19.06.18
✎
12:45
|
(6) Видимо без куки любые запросы (хоть с логином-паролем, хоть без оного) бородятся из каких-нибудь соображений безопасности
|
|||
8
Cyberhawk
19.06.18
✎
12:45
|
(3) Нет, под рукой ничего такого нет
|
|||
9
serezhka
20.06.18
✎
15:14
|
Написал вот такой код, но тоже куки не работают почему-то:
АдресСервиса = "http://service.autopiter.ru/price.asmx"; WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.open("POST", АдресСервиса, 0); WinHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); WinHttp.setRequestHeader("Content-Length", СтрДлина(Запрос)); WinHttp.send(Запрос); Куки = WinHttp.getResponseHeader("Set-cookie"); Запрос = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:aut=""http://www.autopiter.ru/""> | <soapenv:Header/> | <soapenv:Body> | <aut:FindCatalog> <aut:ShortNumberDetail>" + "OC47" + "</aut:ShortNumberDetail> | </aut:FindCatalog> | </soapenv:Body> | </soapenv:Envelope>"; WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.open("POST", АдресСервиса, 0); WinHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); WinHttp.setRequestHeader("Content-Length", СтрДлина(Запрос)); WinHttp.SetRequestHeader("Cookie", Куки); WinHttp.send(Запрос); Может кто шарит в этом, помогите пожалуйста. |
|||
10
serezhka
20.06.18
✎
15:17
|
(9) В переменную Куки записываются данные:
|
|||
11
serezhka
20.06.18
✎
15:18
|
(9) В переменную Куки записываются данные: AuthCoocies=010280AA0C12A7D6D508FE805A757F35EFD50801023200300000012F00FF; expires=Sat, 21-Jul-2018 18:12:19 GMT; path=/; HttpOnly
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |