Как перейти из конверта запроса wsdl SOAP в C # - PullRequest
2 голосов
/ 09 июня 2011

Мне нужно вызвать действие для веб-службы, но я понятия не имею, как будет выглядеть конверт запроса (службы присоединяются во время выполнения пользователями).

Как правило, я хотел бы создать мылоконверт программно на основе ссылки wsdlПо данной ссылке получить список операций и такой результат для конкретного:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:webservice.contentinn.com">
    <soapenv:Header>
        <urn:AuthHeaderElement>
            <token></company>
        </urn:AuthHeaderElement>
    </soapenv:Header>
    <soapenv:Body>
      <urn:TestMethod>
         <id></id>
      </urn:TestMethod>
    </soapenv:Body>
</soapenv:Envelope>

Кто-нибудь имеет представление, как это сделать?

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Вам нужно будет сгенерировать прокси-класс;это сгенерирует все необходимое для вызова действий службы.

Существует несколько способов создания прокси-класса

  1. Вы можете добавить ссылку на службу в свой проект
  2. Запустите SVCUTIL: svcutil http://someurl? Wsdl

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

1 голос
/ 09 июня 2011

Ответы на этот вопрос предлагает пару подходов:

  • SoapUI : Это не совсем программный подход.
  • Castle Dynamic Proxy : Это ближе к тому, что вам кажется нужным, но все же не совсем там.
  • Пример здесь , вероятно, то, что вы 're after:

    DynamicProxy позволяет создавать динамический клиент WCF во время выполнения, указав WSDL URI службы.DynamicProxy не зависит от предварительно скомпилированного прокси или конфигурации.DynamicProxy использует MetadataResolver для загрузки метаданных из службы и WsdlImporter для создания контракта и привязки во время выполнения.Скомпилированный динамический прокси-сервер можно использовать для вызова операций над службой с помощью отражения.

    В примере показано, как динамический прокси-сервер может вызывать операции, которые используют простые и сложные типы.Порядок использования следующий.

    1. Создайте ProxyFactory, указав URI WSDL службы.

      фабрика DynamicProxyFactory = новая DynamicProxyFactory ("http://localhost:8080/WcfSamples/DynamicProxy?wsdl");

    2. Просмотр конечных точек, метаданных, контрактов и т. Д.

    factory.Endpoints factory.Metadata factory.Contracts factory.Bindings
    
    Создать DynamicProxy для конечной точки, указав либо конечную точку, либо имя контракта.
  • Вызов операций на DynamicProxy
  • Закройте DynamicProxy
  • Здесь также есть пример Java .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...