Получение параметров для веб-сервиса программно? - PullRequest
2 голосов
/ 06 мая 2009

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

Моя проблема в том, что каким-то образом мне нужно выяснить структуру параметров, необходимых в теле мыла, которое не обязательно представляет собой одну или две строки, но может представлять собой целое дерево объектов.

Передача не проблема, так как это просто XML.

Как мне это сделать? Нужно ли мне читать всю схему WSDL и пытаться выяснить это, или есть какой-то более простой способ? Я знаю, что .NET может генерировать код для него, но могу ли я легко узнать, какие классы были бы сгенерированы без фактической генерации, и использовать отражение, чтобы узнать, что он сделал?

У кого-нибудь есть идея?

Ответы [ 5 ]

4 голосов
/ 06 мая 2009

Вы можете использовать ServiceDescription Класс, который дает вам объектную модель, представляющую ваш файл wsdl.

Если вы хотите попробовать полезную оболочку, наберите post .

0 голосов
/ 07 мая 2009

Эту проблему трудно решить в общем случае. Что если один из «параметров» службы является документом XML? Что если это сложный тип? Как вы будете генерировать пользовательский интерфейс, чтобы разрешить ввод таких вещей?

Вы также можете посмотреть на soapUI.

Кстати, создание нового домена приложений для загрузки сборок не составляет труда. На самом деле, это довольно просто.

0 голосов
/ 07 мая 2009

Попробуйте использовать ChannelFactory. Это позволит вам динамически вызывать веб-сервис во время выполнения и создавать прокси-клиент. Я видел ваш комментарий о загрузке и разгрузке сборок. Используйте клиентский прокси с отражением, а когда закончите, просто избавьтесь от него.

0 голосов
/ 06 мая 2009

вижу 3 варианта:

a) Свяжитесь с издателем веб-службы и запросите документацию и примеры кода.

б) Используйте Visual Studio для генерации прокси-классов. Затем изучите сгенерированный код, чтобы понять, как вы можете сделать это самостоятельно без сгенерированного кода. Вам нужно будет понять, как работает класс XMLSerializer, поскольку этот класс используется для преобразования сгенерированных типов в XML.

c) Прочитайте описание WSDL, чтобы понять ожидаемые параметры и их формат.

Надеюсь, это поможет,

Sly

0 голосов
/ 06 мая 2009

Я никогда не делал этого, но я считаю, что .net позволяет вам генерировать прокси динамически. После этого вы сможете отразить сгенерированные классы. Я не вижу, чтобы это работало хорошо ни для чего, кроме простых интерфейсов.

...