Katsunori KANDA
aml03****@mail1*****
2002年 5月 1日 (水) 02:23:30 JST
神田です。 早速メーリングリストに投稿してみました:-) > SOAP.pyはcomplexTypeを投げられるようになっているようなのですが。。。 > > Sourceforge.jpのドキュメントに粗い訳をとりあえず置こうと作業していたら、 とてもありがたいです。 > 結構そんなことが書いてあるような。。。未確認ですが。 > > 文書の中のsimpleTypes.ja.txtです。 > # なぜかsimpleTypesなんです。。。 > 確かに、そんなことが書いてあると思って 結局、もう一度丹念にソースを呼んでみたら一応の抜け道は用意され ていました。 例によってTradeTracの呼び出しでためしてみました。 #!/usr/bin/env python import sys import SOAP remote = SOAP.SOAPProxy( "http://ws.serviceobjects.net/uspo/USPatentOffice.asmx", namespace="http://www.serviceobjects.com/", soapaction="http://www.serviceobjects.com/GetPatentInfo" ) SOAP.Config.debug = 1 remote.config.buildWithNamespacePrefix = 0 result = remote.GetPatentInfo(strInput="1234", strLicenseKey="123") print result.Error この中の、 config.buildWithNamespacePrefix = 0 とすると、指定した名前空間をデフォルトの名前空間として宣言でき るみたいです。 #クラスSOAPBuilder の メソッドgennsを参照してみてください この方法を使えばおそらく、今公開されてるほとんどのWebサービスは 呼び出せるような気がしますが、何でもというわけにはいかないでし ょう。 たとえば、 <SOAP-ENV:Body> <Foo xmlns="urn:foo"> <b:bar xmlns:b="urn:bar" /> </Foo> </SOAP-ENV:Body> といった、2つの名前空間にまたがった形で引数を与えることは できません。 いきなりここまで、やるのか?という疑問はかなりありますけど・・。 現状での、SOAP.pyの限界はここいらへんだと思います。