【问题标题】:How to parse WSDL in PHP/Python?如何在 PHP/Python 中解析 WSDL?
【发布时间】:2014-03-17 07:56:58
【问题描述】:

我想知道 PHP 或 Python 中是否有任何东西可以正确解析 WSDL 文件。例如我需要解析http://www.onvif.org/ver10/media/wsdl/media.wsdl。 PHP SOAP 扩展生成如下代码:

<ns1:GetStreamUri env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
    <param0 xsi:type="ns2:Map">
        <item>
            <key xsi:type="xsd:string">StreamSetup</key>
            <value xsi:type="ns2:Map">
                <item>
                    <key xsi:type="xsd:string">Stream</key>
                    <value xsi:type="xsd:string">RTP-Unicast</value>
                </item>
                <item>
                    <key xsi:type="xsd:string">Transport</key>
                    <value xsi:type="ns2:Map">
                        <item>
                            <key xsi:type="xsd:string">Protocol</key>
                            <value xsi:type="xsd:string">UDP</value>
                        </item>
                    </value>
                </item>
            </value>
        </item>
        <item>
            <key xsi:type="xsd:string">ProfileToken</key>
            <value xsi:type="xsd:string">main</value>
        </item>
    </param0>
</ns1:GetStreamUri>

我需要这样:

<GetStreamUri xmlns="http://www.onvif.org/ver10/media/wsdl">
    <StreamSetup>
        <Stream xmlns="http://www.onvif.org/ver10/schema">RTP-Unicast</Stream>
        <Transport xmlns="http://www.onvif.org/ver10/schema">
            <Protocol>UDP</Protocol>
        </Transport>
    </StreamSetup>
    <ProfileToken>main</ProfileToken>
</GetStreamUri>

我已经设法通过扩展默认 SOAP 扩展来生成第二个示例中的请求,但我仍然需要添加所有类型、命名空间等......我不知道如何解析......所以可能是有什么方法可以根据 WSDL 文档中提供的规范生成此请求?

【问题讨论】:

标签: php python soap wsdl onvif


【解决方案1】:

当然有。你检查过 SUDS 了吗? https://fedorahosted.org/suds/wiki/Documentation

可能是最强大的 Python SOAP 库。

它像

from suds.client import Client

client = Client("http://example.com/foo.wsdl")
client.service.someMethod(someParameter)

只需在 Stackoverflow 上搜索 SUDS,您就会找到大量示例和更多帮助。

【讨论】:

猜你喜欢
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多