Формирование HTTP-запроса для веб-службы SOAP - PullRequest
0 голосов
/ 18 сентября 2011

Я пытаюсь получить доступ к этой веб-службе SOAP (http://iberius.scjn.gob.mx:8080/Mobile/Tematica.svc), и у меня также есть доступные WSDL-файлы

http://iberius.scjn.gob.mx:8080/Mobile/Tematica.svc?wsdl
http://iberius.scjn.gob.mx:8080/Mobile/Tematica.svc?wsdl=wsdl0
http://iberius.scjn.gob.mx:8080/Mobile/Tematica.svc?xsd=xsd0
http://iberius.scjn.gob.mx:8080/Mobile/Tematica.svc?xsd=xsd1
http://iberius.scjn.gob.mx:8080/Mobile/Tematica.svc?xsd=xsd2
http://iberius.scjn.gob.mx:8080/Mobile/Tematica.svc?xsd=xsd3

Но я никогда не работал с мылом и не нахожу файлы WSDL достаточно ясными. То, что я пытаюсь сделать, это запросить сервис для различных доступных операций, например, операция ListaMinistros , которая принимает параметр actualizacion , который является датой в формате ггггммдд. Я перепробовал любую возможную комбинацию, чтобы связаться со службой, но он отвечает Конечная точка не найдена ответ. Если бы вы могли предоставить мне пример SOAP XML, было бы замечательно, поскольку почти все другие доступные операции одинаковы, поэтому я не знаю, как это сделать самостоятельно.

Заранее спасибо

========

EDIT

Я установил ссылку WSDL в проекте C # с Visual Studio, чтобы определить, какой запрос он делает

Конфигурационный файл, который он предлагает:

<?xml version="1.0" encoding="utf-8" ?>
      <configuration>
         <system.serviceModel>
            <bindings>
                  <customBinding>
            <binding name="Rest">
                <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
                    messageVersion="Soap12" writeEncoding="utf-8">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                </textMessageEncoding>
                <httpTransport />
            </binding>
        </customBinding>
    </bindings>
    <client>
        <endpoint
            binding="customBinding" bindingConfiguration="Rest" contract="SCJN.Tematica"
            name="Rest" />
    </client>
</system.serviceModel>

Но он включает в себя адрес конечной точки, поэтому я изменил конечную точку так:

  <endpoint address="http://iberius.scjn.gob.mx:8080/Mobile/Tematica.svc"
        binding="customBinding" bindingConfiguration="Rest" contract="SCJN.Tematica"
        name="Rest" />

Но служба отвечает, что конечная точка не найдена.

Так есть ли способ узнать, по какому адресу звонить. Также WSDL не перечисляет атрибуты SOAPAction, а скорее wsaw: Действие в поддерживаемых операциях, которое в моем .NET-коде переведено в следующее

[System.ServiceModel.OperationContractAttribute(Action="urn:Tematica/ListaMinistros", ReplyAction="urn:Tematica/ListaMinistrosResponse")]

    ConsoleApplication2.SCJN.Ministro[] ListaMinistros(string actualizacion);

Ответы [ 3 ]

1 голос
/ 18 сентября 2011

Попробуйте soapUI.org, это многофункциональный проводник с открытым исходным кодом / коммерческий веб-сервис.Вы можете добавить WSDL, и он автоматически создаст заглушки запросов SOAP, которые можно отправить конечным точкам, указанным в WSDL.Даже заголовки HTTP можно сделать видимыми.

0 голосов
/ 18 сентября 2011

В этих статьях [1] [2] описаны wsdl и мыло.

Лучшим вариантом является использование инструмента wsdl2java, доступного на платформе. Если такой вещи нет, то вы можете использовать какую-то другую инфраструктуру, например Axis2, и просматривать сообщения с запросами и ответами для каждой операции.

[1] http://wso2.org/library/2873

[2] http://wso2.org/library/2935

0 голосов
/ 18 сентября 2011

Вы можете скачать веб-сервис студии. Это бесплатная программа, и она покажет вам мыльное сообщение. Поиск в гугле.

...