Доброго времени суток, уважаемые жители Королевства.
Столкнулся вот с такой проблемой. Нужно написать клиент SOAP, для чего мне предоставили набор wsdl, которые я благополучно импортировал с помощью средств XE8. Однако при попытке отправить данные, я получаю исключение с текстом "received content of invalid content-type setting text/html soap expects text/xml" Как можно забороть данную проблему?
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
17-03-2016 02:54
>>>В итоге избавились от костыля в виде SOAP :)
Да, да.
Свои велосипеды, всегда быстрее, и лучше.
Для себя...
Для своей конкретной задачи...
Это известная ловушка.
Вариация синдрома N.I.H. (Not Invented Here, Фатальный недостаток)
Wersoo 10 сентября 2012 в 13:50
Извините, я может чего-то не понимаю, но что такого не челочеческого в SOAP?
Qnub 10 сентября 2012 в 13:57
Ну, как — у него же в основе XML… :)
Wersoo 10 сентября 2012 в 14:22
Тот самый XML который умеет неймспейсы,
автоматическую валидацию, xpath,
имеет готовые библиотеки по работе на всех платформах,
в отличии скажем от JSON-RPC?
И SOAP, в котором есть WSDL, существуют строгие стандарты и спецификации?
Qnub 10 сентября 2012 в 14:23
Точно! Прям слово в слово!
17-03-2016 01:54 | Комментарий к предыдущим ответам
Потом переписали все на Indy HTTP Client с последующей xml transform.
:-)
"По результатам теста, сотрудники разделились на умных и сильных".
Извини, но звучит как "не смогли разобраться - нафигачили костылей".
Я работаю с SOAP, года примерно с 2000-2001, и только недавно натолкнулся на ограничения стоковой реализации.
И то, эти ограничения связаны с реализацией серверов.
Не совсем так.
Разобрались, подключились, запустили промэксплуатацию.
Когда выдохнули (это был запуск трех вокзалов Аэроэкспресса), посмотрели,
1. посчитали трудоемкость поддержки/развития и переписали без HTTPRIO и пр.
2. Получили разделение кода (xml/pas/sql отдельно), более того, слой pas был выкинут за ненадобностию и стал универсальным транспортом.
3. Перестали зависеть от разработчика интернет-портала. Вздрагивали после двух модификаций без предупреждения.
В итоге избавились от костыля в виде SOAP :)
Сейчас у нас есть и клиентские и серверные части, работающие через простой xml-api. Все счастливы, все улыбаются.
15-03-2016 06:13 | Комментарий к предыдущим ответам
Да, кстати, непонятно:
>>> я получаю исключение с текстом
Это исключение на сервере или на клиенте?
Мне с перепугу представилось, что это сервер кричит, что клиент ему HTML сует.
А если это кричит SOAP-клиент, что ему неожиданно HTML приехал - тогда разумеется, на клиенте ничего трогать не надо, а скорее всего не на ту страничку лезете, или сервер о какой-то ошибке человеческим языком сказать хочет.
А вообще анализ таких ситуаций лучше начинать с трассировки трафика. Тогда сразу понятно, кто что посылает и что отвечает.
Однако при попытке отправить данные
1) wsdl
2) код
(HTTPRIO1 as TMyType).MyMethod(MyVar)
Перемудрил.
На форме он не нужен.
Только если события прописать.
В большинстве случаев, достаточно только модуля импорта.
Ищите в обвязке HTTPRIO, где задается Content-type.
Не вздумай.
Ничего там допиливать не надо.
Скорее, адрес неверный.
Он тебе страничку отдает, а не результат вызова.
Если только сервер не "перепиленный"(поломанный), как у (клиента) pastor'a.
Потом переписали все на Indy HTTP Client с последующей xml transform.
:-)
"По результатам теста, сотрудники разделились на умных и сильных".
Извини, но звучит как "не смогли разобраться - нафигачили костылей".
Я работаю с SOAP, года примерно с 2000-2001, и только недавно натолкнулся на ограничения стоковой реализации.
И то, эти ограничения связаны с реализацией серверов.
Результат вызова метода - сообщение об исключительной ситуации с текстом "received content of invalid content-type setting text/html soap expects text/xml". В чём моя ошибка?
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.