形成SOAP Web服务的HTTP请求

时间:2011-09-18 00:35:46

标签: asp.net xml web-services soap wsdl

我尝试访问此SOAP Web服务(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

但是我从未使用过soap,而且我没有找到足够清晰的WSDL文件。 我要做的是查询服务以查找可用的不同操作,例如 ListaMinistros 操作,该操作采用参数 actualizacion ,即yyyymmdd格式的日期。 我已经尝试了所有可能的组合来联系该服务,但它以端点未找到响应进行响应。 如果你能给我一个SOAP XML的例子,它会很棒,因为几乎所有其他可用的操作都是一样的,所以我很冷静地看看如何自己做。

提前致谢

======

修改

我已经在Visual Studio的C#项目中设置了WSDL引用,以查看它的请求是什么类型

配置文件出现以下内容:

<?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:支持的操作中的Action,它在我的.NET代码中被翻译成以下

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

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

3 个答案:

答案 0 :(得分:1)

尝试使用soapUI.org,它是一个功能丰富的开源/商业Web服务资源管理器。您可以提供WSDL,它将自动创建SOAP请求存根,可以将其发送到WSDL中指定的端点。甚至可以使HTTP标头可见。

答案 1 :(得分:0)

您可以下载webservice studio。 它的免费程序,它会显示一条肥皂信息。在谷歌搜索。

答案 2 :(得分:0)

这些文章[1] [2]描述了wsdl和soap。

更好的选择是使用平台提供的wsdl2java工具。如果没有这样的东西,那么你可以使用像Axis2这样的其他框架,并检查每个操作的请求和响应消息。

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

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