Здравствуйте!
Борюсь с веб-сервисом по поиску и заказу автозапчастей:
http://service.autopiter.ru/price.asmx?WSDL

Загвоздка с передачей кукиз после авторизации. Вот что написал:

```1c
    Запрос = "<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aut="http://www.autopiter.ru/">
    | <soapenv:Header/>
    | <soapenv:Body>
    | <aut:Authorization>
    | <aut:UserID>"
    + Логин+ "</aut:UserID>
    | <aut:Password>"
    + Пароль + "</aut:Password>
    | <aut:Save>"
    + "true" +"</aut:Save>
    | </aut:Authorization>
    | </soapenv:Body>
    | </soapenv:Envelope>";

    АдресСервиса = "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>"
    + Запчасть + "</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(Запрос);
```

На первый запрос об авторизации приходит положительный ответ.
А вот второй запрос вовзращается с ошибкой.

Кто с таким делом сталкивался, подскажите пожалуйста как правильно передать куки.
---
Вот что гласит по этому поводу msdn:
Cookie Handling in WinHTTP
HTTP session data is passed between the client and server in the cookie header of the request or the response. The server sends cookies to the client in the Set-cookie header of the response and the WinHTTP API resends the server cookie to the server in the cookie header of the request. The cookie handling specifications, described in rfc 2109 (HTTP State Management Mechanism), are implemented by default in WinHTTP. Recent cookie handling specifications, described in rfc 2964, are not supported by WinHTTP.

WinHTTP obtains the cookie fr om the servers Set-Cookie header and stores it in a cache on a per-session basis. This cookie is resent on subsequent requests in the same WinHTTP session wh ere the target matches the source of the cookie. The WinHTTP API regenerates the request cookie header for each leg in the request.
Потому не очень понятно, зачем руками все это делать.. Но тем не менее на той же странице описано, как это делается..
Ссылку дать не могу, ибо жоские инфостартовские боты банят.. Гуглить winhttp set cookie.
---
Если вопросов нет - готов принять вознаграждение.
---
Сообщение было скрыто модератором.
---
(4) незнаю почему мой вопрос не появляется
---
потому что в нем есть ссылки, видимо. Это новая "доработка" сайта - просто тупо не пропускать сообщения с любыми ссылками.
---
Тоже готов принять такой щедрый жест))
---
Расскажите ваш реальный опыт применения веб-сервисов. Или такие истории уже где-то опубликованы?
---
а где ваши 10 см вознаграждения? )))
---
Сообщение было скрыто модератором.
---
Попробую так
---
анализатором запросов. Сначала делаешь это в браузере. Потом смотришь запрос и делаешь это кодом.
---
Ну так запрос вроде как правильный, не понятно как куки правильно передать.
---
ну так посмотри как это в анализаторе выглядит. Думаю что-то пропустил!
---
у них на сайте есть пример на 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С сделать, вот в чём вопрос?
---
Сообщение было скрыто модератором.
---
Вот что гласит по этому поводу msdn:
Cookie Handling in WinHTTP
HTTP session data is passed between the client and server in the cookie header of the request or the response. The server sends cookies to the client in the Set-cookie header of the response and the WinHTTP API resends the server cookie to the server in the cookie header of the request. The cookie handling specifications, described in rfc 2109 (HTTP State Management Mechanism), are implemented by default in WinHTTP. Recent cookie handling specifications, described in rfc 2964, are not supported by WinHTTP.

WinHTTP obtains the cookie fr om the servers Set-Cookie header and stores it in a cache on a per-session basis. This cookie is resent on subsequent requests in the same WinHTTP session wh ere the target matches the source of the cookie. The WinHTTP API regenerates the request cookie header for each leg in the request.
Потому не очень понятно, зачем руками все это делать.. Но тем не менее на той же странице описано, как это делается..
Ссылку дать не могу, ибо жоские инфостартовские боты банят.. Гуглить winhttp set cookie.
---
Сенкью вери матч!!!
---
У них пример на ASP.NET есть:

// Создание куки контейнера, для
// передачи данных авторизации, не авторизованные пользователи не могут получить данные
// от функции: FindCatalog, GetPrice,GetPriceId

System.Net.CookieContainer cookCon = new CookieContainer();

//Создаем экземпляр класса прокси клиента, который использует SOAP протокол

WebReference.Price w = new WebApplication2.WebReference.Price();

//Устанавливаем куки-контейнер

w.CookieContainer = cookCon;
w.Timeout = 10000;

Вопрос как это в 1С реализовать
---
Стесняюсь спросить, а почему вы встроенный функционал не используете?
Я взял пустую конфу, добавил туда WS-ссылку из вашего файла.
Есть и пространство имен, и описание процедур-функций их сайта.
Это как XML парсить не встроенными процедурами, а через COM подключать библиотеку парсера.
Можно, но зачем?
---
Пробовал, куки не передаются
---
Уже несколько веб-сервисов подключил к 1С, и к сожалению WS-ссылки ни в одном случае мне не помогли, приходиться писать через костыли.
---
Каким способом осуществили работу с данным веб-сервисом?
---
Не знаю работает этот код сейчас или нет, но когда я дописал обработку, она была рабочая. Вот рабочий код, только результат запроса нужно вручную разобрать:

```1c
    Запрос = "<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aut="http://www.autopiter.ru/">
    | <soapenv:Header/>
    | <soapenv:Body>
    | <aut:Authorization>
    | <aut:UserID>"
    + ТаблицаПоставщиков[2].Логин + "</aut:UserID>
    | <aut:Password>"
    + ТаблицаПоставщиков[2].Пароль + "</aut:Password>
    | <aut:Save>"
    + "true" +"</aut:Save>
    | </aut:Authorization>
    | </soapenv:Body>
    | </soapenv:Envelope>";

    АдресСервиса = "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:IsAuthorization/>
    | </soapenv:Body>
    | </soapenv:Envelope>";

    WinHttp.send(Запрос);

    Запрос = "<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aut="http://www.autopiter.ru/">
    | <soapenv:Header/>
    | <soapenv:Body>
    | <aut:FindCatalog> <aut:ShortNumberDetail>"
    + Артикул + "</aut:ShortNumberDetail>
    | </aut:FindCatalog>
    | </soapenv:Body>
    | </soapenv:Envelope>";

    WinHttp.send(Запрос);
```
---
xmlns:aut=""http://www.autopiter.ru/""
Спасибо за подсказку. У меня не много по другому. Данным способом уже на работает. Ошибка у меня была в том, что на каждый запрос создавал новый COM объект. Теперь все работает. Но ведь cookie мы ведь так ни куда и не передаем.