简体   繁体   中英

Forming an HTTP request for a SOAP web service

I trying to acces this SOAP Web Service (http://iberius.scjn.gob.mx:8080/Mobile/Tematica.svc) and I also have its WSDL files available

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

But I'm never worked with soap and I'm not finding the WSDL files clear enough. What I'm trying to do is query the service for the different operations available, for example the ListaMinistros operation that takes a parameter actualizacion that is a date in the format yyyymmdd. I have tried every possible combination to contact the service but it responds with a Endpoint not found response. If you could provide me with an example of the SOAP XML it would be great as almost all of the other available operations are the same so I cold see how to do it myself.

Thanks in advance

========

EDIT

I have set up the WSDL reference in a C# project with visual studio to se what kind of request it makes

the config file it comes up with its the following:

<?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>

But it doesent includes the address for the endpoint, so I modified the endpoint to look like this:

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

But the service responds with a endpoint not found.

So is there a way to find out wich address to call. Also the WSDL does not list SOAPAction attributes but rather wsaw:Action in the operations supported, wich is translated in my .NET code to the following

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

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

Try soapUI.org, it's a feature rich opensource/commercial web service explorer. You can feed in the WSDL and it will automatically create SOAP request stubs, which can be send to the endpoints named in the WSDL. Even the HTTP headers can be made visible.

You can download webservice studio. Its free program and it will show you a soap message. Search in the google.

These articles [1][2] describes wsdl and soap.

The better options is to use the wsdl2java tool available with the platform. If there is no such thing available then you can use some other framework like Axis2 and examine the request and response messages for each and every operation.

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM