Мастер-Web:Дополнительный модуль Сервис TourML Ответы на часто задаваемые вопросы

Материал из Megatec
Перейти к: навигация, поиск

Статья находится на стадии разработки.
Версия статьи от 21-07-2016.

У нас стоит веб-сервис, но мы не можем воспользоваться методом GetValidTourList

Вопрос

У нас стоит веб-сервис, но мы не можем воспользоваться методом GetValidTourList. Как мы можем получать данные?

Ответ

Для доступа к сервису необходимо использовать авторизацию посредством логина и пароля. Веб-сервис поддерживает различные виды авторизации (виды авторизации зависят от настроек веб-сервиса на стороне оператора). По умолчанию всегда поддерживается WSE авторизация.

Если у вас есть примеры на PHP?

Вопрос

Получили пример работы, но мы не используем .net при разработке. У нас PHP. Если у вас есть примеры на PHP?

Ответ

В настоящий момент примеров на PHP нет. Но в коде на C# не очень сложно разобраться как воспользоваться альтернативными методами аутентификации (кроме WSE, который для реализации на PHP слишком сложен). Более подробно об альтернативных методах можно ознакомиться в разделе ”Авторизация без использования WSE”.

При обращении к сервису у нас возникает ошибка: System.Data.SqlClient.SqlException:

Вопрос

При обращении к сервису у нас возникает ошибка: System.Data.SqlClient.SqlException: При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что на SQL Server разрешены удаленные соединения (provider: Поставщик именованных каналов, error: 40 - Не удалось открыть подключение к SQL Server).

Ответ

Проблема в настройках веб-сервиса. Оператор должен исправить строку подключения к базе данных в файле настроек сервиса web.config. В данной строке указывается адрес сервера, база данных, логин и пароль учетной записи, под которой работает веб-сервис.

Ошибка System.Data.SqlClient.SqlException: Login failed for user 'user1'

Вопрос

На все запросы мы получаем ошибку:

System.Data.SqlClient.SqlException: Login failed for user 'user1'. Reason: The account is disabled.

Ответ

Проблема связана с настройками SQL сервера на стороне оператора. Обратитесь к техническим специалистам оператора с просьбой решить проблему.

Сервис возвращает ошибку - 500 - внутренняя ошибка сервера

Вопрос

При попытке получить список спецпредложений сервис возвращает ошибку - 500 - внутренняя ошибка сервера.

Ответ

Если Вы используете браузер Internet Explorer, то при возникновении любой ошибки на этапе авторизации возвращается HTTP 500 - Внутренняя ошибка сервера. Internet Explorer скрывает текст возникшей ошибки. В данном случае стоит воспользоваться каким-либо альтернативным браузером (Opera, Mozilla), где сообщение от сервера выведется на экран. Также текст ошибок можно получать, воспользовавшись логгерами Http, которые отслеживают запросы\ответы по этому протоколу.

Как компании продлить пароль для доступа к сервису TourML оператора?

Вопрос

Мы — компания ООО”*****”. Продлите, пожалуйста, нам пароль для доступа к сервису TourML оператора *******.

Ответ

Продление логинов осуществляется компанией "Мегатек" только по запросу по электронной почте со стороны ответственных сотрудников туроператора. Для решения вопросам обратитесь к представителем оператора.

Ошибка System.Web.Services.Protocols.SoapException: You are not allowed to use this function

Вопрос

Пытаемся получить ответ на запрос AgreementsByNumber сервиса компании *****. В ответе возвращается сообщение об ошибке System.Web.Services.Protocols.SoapException: You are not allowed to use this function.

Ответ

Используемый Вами логин не позволяет получить доступ к этой функции. Обратитесь к оператору для получения другого логина или для разрешения на использование функции для текущего логина.

Ошибка при обращении к методу GetPriceListByTour: Server did not recognize the value of HTTP Header SOAPAction

Вопрос

У меня возникает ошибка при обращении к методу GetPriceListByTour: Server did not recognize the value of HTTP Header SOAPAction: http://tourml.ru/service/2004-08-13/products/GetPriceListByTour.

Ответ

Дело в том что в последних версиях сервиса этот метод (GetPriceListByTour) не доступен. Вместо него нужно использовать метод GetSPOPageByKey.

Есть ли возможность увеличить лимит длин страниц СПО в 5000 прайсов?

Вопрос

У вас на сервисе стоит ограничение длин страниц СПО в 5000 прайсов. Есть ли возможность увеличить этот лимит?

Ответ

Такое ограничение было введено в целях защиты серверов операторов от излишней нагрузки. В некоторых случаях даже 5000 является большим значением (в случае многоотельных туров с большим количеством размещений). В большинстве случаев на выгрузку с ограничением 5000 требуется порядка нескольких секунд. Увеличение лимита невозможно.

Работает ли веб-сервис автоматически?

Вопрос

Нам на сайт нужно вывести информацию о туре. Согласно описанием методов, все работает автоматически, все подгружается и выводится на экран.

Ответ

Сервис автоматически ничего не выкладывает. Для того чтобы сервис вернул данные нужно вызвать тот или иной метод. То есть нужен именно какой-то код на странице, который будет эти методы вызывать. В качестве ответа сервис возвращает XML (TourML), в котором описаны, например, СПО. Затем, имея такую информацию в виде XML, Вы можете сформировать нужную Вам страницу самостоятельно.

Ошибка:reasonLat="Инициализатор типа "Megatec.Common.BusinessRules.Users" выдал исключение в Megatec.Common.BusinessRules.Users..ctor(DataContainer dataCache)....

Вопрос

При работе с веб-сервисом возникает ошибка: reasonLat="Инициализатор типа "Megatec.Common.BusinessRules.Users" выдал исключение в Megatec.Common.BusinessRules.Users..ctor(DataContainer dataCache)....

Ответ

Скорее всего, веб-сервис работает от имени пользователя “sa”. Программный комплекс "Мастер-тур" не позволяет работать под таким пользователем. Необходимо указать другого пользователя, под которым может работать веб-сервис. Для этого необходимо в строке подлкючения заменить логин/пароль пользователя в конфигурационном файле веб-сервиса.

Как получить хеш-пароля?

Вопрос

В документации указано, что при использовании авторизации через GET строку необходимо передавать зашифрованный хеш-пароля, а не пароль в явном виде. Как нам получить хеш-пароля?

Ответ

Существуют различные методы получения хеша в разных средствах разработки. Для более детальной информации обратитесь к соответствующей документации к средству разработки.

Также Вы может воспользоваться возможностью, которая есть в примере работы с веб-сервисом (данный пример входит в состав дистрибутива и поставляется в виде архивного файла ServiceClient.zip). Распакуйте все содержимое архива в любой рабочий каталог и запустите программу ServiceClient.exe
Ds075.png
На экране появится окно примера работы с веб-сервисом:
Ds076.png
Введите в поле "Пароль" Ваш пароль, используемый для доступа к web-сервису. При этом в поле base64(SHA-1) отображается хеш пароля.