2

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拡張機能を拡張することにより、2番目の例のようにリクエストを生成することができましたが、それでもすべてのタイプ、名前空間などを追加する必要があります...解析方法がわかりません...いくつかあるかもしれませんWSDLドキュメントで提供されている仕様に従ってこのリクエストを生成する方法は?

4

1 に答える 1

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 を検索するだけで、たくさんの例と詳細なヘルプが見つかります。

于 2014-03-17T08:43:24.957 に答える