|
Помогите подключится к API Merlion (WSDL, SOAP)
|
|||
---|---|---|---|
#18+
Доброго времени суток. Уверен задача плёвая, но но я уже целый день убил на неё ((. Очень нужен help. По работе надо протестировать работу по API с поставщиком Merlion (дистрибьютор). API работает по протоколу SOAP. Подключение осуществляется по HTTPS протоколу с использованием Basic-аутентификации. Шифрование TLS версий 1.0, 1.1, 1.2. WSDL-описание сервиса по ссылке . Собственно проблема у меня с подключением к сервису. Что я делаю: Создаю пустой проект. Добавляю ссылку на службу (WSDL). Кстати при добавлении ссылки на службу сервис запрашивает логин/пароль, я пытаюсь их ввести, но окно с запросом логина/пароля просто исчезает на секунду, потом снова появляется. Ошибки ни какой не выдаёт. В любом случае, после добавлении ссылки на службу автоматически создаются классы для работы с сервисом. Один из классов называется MLPortClient, он по всей видимости и выступает в роли клиента web-службы. Вот здесь для меня и начинаются сложности. Если просто создать класс без аргументов (есть такой конструктор), то при обращении к методам этого класса сервер не выдаст ответа, так как запрос по сути будет анонимным. MLPortClient имеет и другие конструкторы: MLPortClient(string endpointConfigurationName) MLPortClient(string endpointConfigurationName, string remoteAddress) MLPortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) MLPortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) Эти конструкторы для меня тёмный лес. Я пытался найти какие то готовые примеры работы с этими объектами (и что то находил), но в конечном итоге положительного результата так и не смог получить. Я понимаю, что мне нужно как то передать способ аутентификации, логин и пароль, осталось понять как... Буду признателен за любую помощь в данном вопросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2019, 22:35 |
|
Помогите подключится к API Merlion (WSDL, SOAP)
|
|||
---|---|---|---|
#18+
Собственно говоря дальше кода: Код: c# 1. 2. 3. 4.
...мне не удалось сдвинуться. Программа выдаёт ошибку: "System.ServiceModel.Security.MessageSecurityException: "Запрос HTTP не разрешен для схемы аутентификации клиента "Anonymous". От сервера получен заголовок аутентификации "Basic realm="Restricted access to web-service." ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2019, 07:12 |
|
Помогите подключится к API Merlion (WSDL, SOAP)
|
|||
---|---|---|---|
#18+
Я писал СОАП-коннектор для мерлиона, но это было очень давно, сейчас могло всё поменяться. Вот кусок моей тогдашней проги, вдруг поможет: Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2019, 09:04 |
|
Помогите подключится к API Merlion (WSDL, SOAP)
|
|||
---|---|---|---|
#18+
Shocker.ProЯ писал СОАП-коннектор для мерлиона, но это было очень давно, сейчас могло всё поменяться. Вот кусок моей тогдашней проги, вдруг поможет: Код: c# 1. 2. 3.
Спасибо. Это первое что я написал, но сервер выдаёт ошибку (см. сообщение выше). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2019, 11:04 |
|
Помогите подключится к API Merlion (WSDL, SOAP)
|
|||
---|---|---|---|
#18+
А в конфиге endpoint правильно настроен? Такое ощущение, что логин и пароль не уходят. Встречал такое поведение, когда endpoint настроен на авторизацию клиентским сертификатом. Должно быть как в примере: https://docs.microsoft.com/ru-ru/dotnet/framework/wcf/feature-details/transport-security-with-basic-authentication ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2019, 12:09 |
|
Помогите подключится к API Merlion (WSDL, SOAP)
|
|||
---|---|---|---|
#18+
Алымов Анатолий, По аналогии с примером, получился следующий код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
..., выполнение которого выдаёт ошибку: авторSystem.ServiceModel.ProtocolException: "Тип содержимого application/xml; charset="UTF-8" ответного сообщения не соответствует типу содержимого привязки (application/soap+xml; charset=utf-8). При использовании особого кодировщика необходимо правильно реализовать метод ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2019, 23:31 |
|
Помогите подключится к API Merlion (WSDL, SOAP)
|
|||
---|---|---|---|
#18+
Бррр... . Я уже готов за деньги решать эту проблему, без шуток. Если есть желающие пишите в личку или тут... Немного размышлений: Вот рабочий код на PHP: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Вот мой код на C#: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
В строке "binding.TextEncoding = Portable.Text.Encoding.GetEncoding( "Windows-1251" )" я пытаюсь переопределить кодировку отправляемых сообщений на "Windows-1251" - это я делаю по аналогии с примером на PHP. Но TextEncoding не хочет принимать эту кодировку и на то есть причины, данное свойство её просто напросто не поддерживает, поддерживаются только: Код: c# 1.
Если же использовать кодировку UTF-8, то на последней строке "var topGroup = clientMerlionAPI.getCatalog( "Order" )", возникает ошибка: авторSystem.ServiceModel.ProtocolException: "Тип содержимого application/xml; charset="UTF-8" ответного сообщения не соответствует типу содержимого привязки (application/soap+xml; charset=utf-8). При использовании особого кодировщика необходимо правильно реализовать метод Help me please! Или меня скоро в дурку отвезут, я уже какой день ломаю голову над этой задачей... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2019, 12:23 |
|
|
start [/forum/topic.php?fid=19&msg=39824839&tid=1396665]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 257ms |
total: | 404ms |
0 / 0 |