Добрый день.
Подскажите, мы подключались к веб-сервису из 1С через HTTP запрос. При выполнении запроса “Login”, сервер нам возвращал Set-Cookie, которые в последующем передавали с запросом и получали данные показаний счетчиков.
После обновления до R15.08, сервер не возвращает Set-Cookie при выполнении запроса “Login”. Что изменилось в механизме авторизации, как нам изменить запрос для правильной авторизации?
Запрос авторизации в 1С:
Соединение = Новый HTTPСоединение(“lerstest”,80,“ЛОГИН”,“ПАРОЛЬ”,30);
Уточнение.
При подключении локально на сервере, все отрабатывает нормально. При подключении с другого компьютера в сети, ошибка, но через браузер, доступ к Веб-сервису есть.
Access-Control-Allow-Credentials разрешение на передачу куки
Access-Control-Allow-Origin здесь нужно указать адрес сервера 1С я так полагаю
Access-Control-Allow-Headers вот сюда входит разрешение на передачу Content-Tepe, Set-Cookie и прочих флагов при общение в междоменной среде (соответственно запрос с другой машины)
Доброго времени суток. Спасибо за информацию.
После правки Header.config, при HTTP запросе выводит следующий текст ошибки:
“Сервер не может обработать запрос, потому что данный тип носителя не поддерживается.”
Теперь Cookie возвращает.
Но методы GetMeasurePointByIdExtended и GetMeasurePointTotals не возвращают расширенную информацию.
Конкретно GetMeasurePointByIdExtended с запрашиваемой информацией MeasurePointInfoFlags = “Equipment”, не возвращает тег “Device”.
А GetMeasurePointTotals не возвращает показания.
Подскажите, что можно сделать в первом случае “Сервер не может обработать запрос, потому что данный тип носителя не поддерживается.”?
И с возвратом расширенной информации?
Спасибо!
Попробуйте Content-Type: application/soap+xml; charset=utf-8
Вообще вся информация по функциям API есть по адресу http://ваш_адрес_web_lers/Api.asmx, там в том числе приведены для SOAP 1.2 форматы, смотрите
По поводу CORS то что я выше писал, прошу добавить в документацию. Это важный момент, потому что в междоменном взаимодействии без настроек для IIS разрешений на передачу данных нет. Единственный момент, не рекомендуют писать Access-Control-Allow-Origin: *, иначе куки (credentials) не будут передаватся, там обязательно нужно указывать конкретный адрес домена, на котором работает приложение.
Добрый день. Обмен заработал.
Описание формата как раз и брал из http://…/api.asmx. Проблема решилась установкой Content-Type: в значение “text/xml; charset=utf-8”,
а заголовка “SOAPAction” в значение соответствующие метода (например: “http://www.lers.ru/website/api/GetMeasurePointTotals”).
Т.е. обмен заработал на основе формата SOAP 1.1, описанного в http://…/api.asmx.