Доброго дня, коллеги.

Не буду мусолить, перейду сразу к примерам.
Есть такой вот нерабочий код:

```1c
    HTTPСоединение = Новый HTTPСоединение("service.autopiter.ru");
    HTTPЗаголовки = Новый Соответствие;
    ТелоЗапроса = "<?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> <GetPriceId xmlns="http://www.autopiter.ru/"> <ArticleId>"+ArticleId+" </ArticleId> <Currency>РУБ</Currency> <SearchCross>1</SearchCross> </GetPriceId> </soap:Body> </soap:Envelope>";
    HTTPЗаголовки.Вставить("Content-Type", "text/xml; charset=utf-8");
    HTTPЗаголовки.Вставить("Content-Length", СтрДлина(ТелоЗапроса));
    HTTPЗаголовки.Вставить("SOAPAction", "http://www.autopiter.ru/GetPriceId");
    HTTPЗапрос = Новый HTTPЗапрос("/v2/price", HTTPЗаголовки);
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, , ИспользованиеByteOrderMark.НеИспользовать);
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
```

Возвращает код статуса 400, типо "бэд риквест".
Но почему-то тоже самое через MSXML2.XMLHTTP работает:

```1c
    MSXML3 = Новый COMОбъект("MSXML2.XMLHTTP");
    MSXML3.open("POST", "http://service.autopiter.ru/v2/price", 0);
    MSXML3.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    MSXML3.setRequestHeader("Content-Length", СтрДлина(ТелоЗапроса));
    MSXML3.setRequestHeader("SOAPAction", "http://www.autopiter.ru/GetPriceId");
    MSXML3.send(ТелоЗапроса);
```

Не подскажете, в где собака зарыта? Разве это не тоже самое?
ЗЫ: Платформа 8.3.17, режим совместимости 8.2
ЗЫЫ: До сего момента все запросы через нативное http-соединение работали.
---
Но необходимые заголовки, которые описаны в документации, передаются.
Вывод - сей сервис *овно.
Решено оставить работу через MSXML2.XMLHTTP. Точка.
---
Установил "фидлер". Разница в запросах в заголовке "Cookie".
Прикол в том, что формат куки такой:

AuthCoocies=0102890788DDB95FD808FE89B7F04A4878D8080103000000­12F00FF; expires=Sat, 24-Oct-2020 18:11:56 GMT; path=/; HttpOnly; SameSite=Lax,
AuthCoocies=0102896A8ADDB95FD808FE891AF34A487801063300320030­0037003900340000012F00FF; expires=Sat, 24-Oct-2020 18:11:56 GMT; path=/; HttpOnly; SameSite=Lax

Так вот если я передаю все - ошибка.
Если передаю первый - тоже ошибка.
А если беру последний - все оК.
Это прикол такой?!
---
видимо все же не тоже самое
---
HTTPЗаголовки.Вставить("Content-Length", СтрДлина(ТелоЗапроса));
Где-то были темы, что этот из-за ручной установки этого заголовка возникают проблемы. Платформа сама его устанавливает.
---
СтрДлина возвращает количество символов utf, а должно быть количество байт. Без этой строки должно заработать.
---
Я тоже нигде его не устанавливал, просто тут какая-то шляпа.
Убрал - код состояния 500. И ответ неправильный( у них сервис часто неверные ответы шлёт, мол, бан тебе на сутки)
MSXML2.XMLHTTP работает.
---
Почему с SOAP работаешь через HTTP-соединение? работай через WSОпределение.
---
Потому что через WSОпределение такая же ошибка как и через HTTPСоединение.

```1c
    Попытка
    СсылкаНаВебСервис = "http://service.autopiter.ru/v2/price?WSDL";
    ОпределениеСсылки = Новый WSОпределения(СсылкаНаВебСервис);
    URIПространстваИмен = ОпределениеСсылки.Сервисы[0].URIПространстваИмен;
    WSПрокси = Новый WSПрокси(ОпределениеСсылки, URIПространстваИмен, "NewPrice", "NewPriceSoap");
    Исключение
    WSПрокси = Неопределено;
    КонецПопытки;

    Результат = WSПрокси.GetPriceId(ArticleId, ", "РУБ", "1", "0", "0");
```

Снова ошибка, мол, заблокирован, хотя через MSXML2.XMLHTTP приходит верный ответ.
ЗЫ: http://service.autopiter.ru/v2/price?op=GetPriceId
---
а тут фишка в том что платформа закидывает доп заголовки, которые при отправке не видны, а ком нет!
Сделай отладку запроса в другом сервисе и увидишь разницу.
---
Но необходимые заголовки, которые описаны в документации, передаются.
Вывод - сей сервис *овно.
Решено оставить работу через MSXML2.XMLHTTP. Точка.
---
или вы его не умеете готовить!
---
Ну так попробуй его приготовь!
Ни одна описанная операция этого г**осервиса не работает (или 1с до сих пор не умеет работать с soap, передавая какую-то дополнительную хрень).
Возмём другую операцию - FindCatalog (<wsdl:operation name="FindCatalog">, doc)
Указан всего один параметр типа строка (<s:element minOccurs="0" maxOccurs="1" name="Number" type="s:string"/>).
Делаю вызов:

```1c
    Результат = WSПрокси.FindCatalog(Article);
```

И снова получаю сообщение, что я забанен на сутки, хотя через MSXML2.XMLHTTP все работает.
ЗЫ: не тому адресовывал, речь про WS.

```1c
    СсылкаНаВебСервис = "http://service.autopiter.ru/v2/price?WSDL";
    ОпределениеСсылки = Новый WSОпределения(СсылкаНаВебСервис);
    URIПространстваИмен = ОпределениеСсылки.Сервисы[0].URIПространстваИмен;
    Прокси = Новый WSПрокси(ОпределениеСсылки, URIПространстваИмен, "NewPrice", "NewPriceSoap12");

    Результат = Прокси.Authorization(Логин, Пароль, Истина);
```
---
все мои проекты завершались успехом. Вы предлагаете решить вашу задачу?)
На что обратить внимание бесплатно я вам указал.
---
бесплатно спасибо за такой подарок
---
или 1с до сих пор не умеет работать с soap, передавая какую-то дополнительную хрень
С soap у 1С могут быть проблемы. Он его не в полном объеме поддерживает. Во всяком случае раньше было не в полном. С простыми сервисами проблем обычно не было, а вот со сложными или хитрыми - были.
Но если у тебя через MSXML2.XMLHTTP все работает, то стопудово можно приготовить и через HTTPСоединение.
Просто поставь Fiddler и найди 20 отличий.
---
Fiddler Не умею им пользоваться.
Но postman-ом все ОК.
---
Не умею им пользоваться.
Загугли. Там все просто. Это просто прокси, который умеет перехватывать твой локальный http-трафик и показывать запросы именно в том виде, в котором они от тебя уходят. Т.е. ты сможешь увидеть, чем отличается одинэсный запрос от валидного. Он специально для такого рода отладки и придуман.
---
Т.е. ты сможешь увидеть, чем отличается одинэсный запрос от валидного. Он специально для такого рода отладки и придуман.
Я все равно ничего не поделаю с тем, что 1с передаёт служебные заголовки, на которые мой сервис ругается.
MSXML2.XMLHTTP ничего лишнего не передаёт.

Но если у тебя через MSXML2.XMLHTTP все работает, то стопудово можно приготовить и через HTTPСоединение.
Сомневаюсь:)
---
Я все равно ничего не поделаю с тем, что 1с передаёт служебные заголовки, на которые мой сервис ругается.
MSXML2.XMLHTTP ничего лишнего не передаёт.
Хм... Действительно, если проблема в "неубираемых" заголовках, то со "стопудово" я погорячился.
---
Установил "фидлер". Разница в запросах в заголовке "Cookie".
Прикол в том, что формат куки такой:

AuthCoocies=0102890788DDB95FD808FE89B7F04A4878D8080103000000­12F00FF; expires=Sat, 24-Oct-2020 18:11:56 GMT; path=/; HttpOnly; SameSite=Lax,
AuthCoocies=0102896A8ADDB95FD808FE891AF34A487801063300320030­0037003900340000012F00FF; expires=Sat, 24-Oct-2020 18:11:56 GMT; path=/; HttpOnly; SameSite=Lax

Так вот если я передаю все - ошибка.
Если передаю первый - тоже ошибка.
А если беру последний - все оК.
Это прикол такой?!
---
В общем, работает исключительно так:

```1c
    СтрокаКуки = HTTPОтвет.Заголовки["Set-Cookie"];
    ПоследнийКуки = Сред(СтрокаКуки, _СтрНайти(СтрокаКуки, "AuthCoocie", "СКонца"));
    HTTPЗаголовки.Вставить("Cookie", ПоследнийКуки);
```

Но это костыль какой-то. Наверное, нужно смотреть сколько их и какие параметры имеет ... и уже на основании этого брать конкретный. Я не знаю почему у меня их несколько, может просто у меня несколько сеансов висит (постман с "кип-элайв" + 1с).