0

soaplib Hello World プログラムを実行しようとしています:

import soaplib
from soaplib.core.service import rpc, DefinitionBase
from soaplib.core.model.primitive import String, Integer
from soaplib.core.server import wsgi
from soaplib.core.model.clazz import Array
from soaplib.core.service import soap


class HelloWorldService(DefinitionBase):
    @soap(String,Integer,_returns=Array(String))
    def say_hello(self,name,times):
        results = []
        for i in range(0,times):
            results.append('Hello, %s'%name)
        import pdb; pdb.set_trace() 
        return results

if __name__=='__main__':
    try:
        from wsgiref.simple_server import make_server
        soap_application = soaplib.core.Application([HelloWorldService], 'tns')
        wsgi_application = wsgi.Application(soap_application)
        server = make_server('localhost', 7789, wsgi_application)
        server.serve_forever()
    except ImportError:
        print "Error: example server code requires Python >= 2.5"

ブラウザと単純な suds クライアントの両方を使用して、サービスへの接続に問題がありました。ここでの一番の回答のコードを使用して、小さな Web サービスのメソッドのリストと、それらがパラメーターと型であるリストを取得しました。私が得た結果は、特に心強いものではありませんでした。

say_hello(None: say_hello)

したがって、関数を適切に呼び出すことができなかった理由は、そのパラメーターと型が登録されていないように見えるためです。ただし、私が知る限り、そうではありません。これは、soaplib Web サイトに表示される hello world プログラムであるため、特に唖然とします。

ここと他の場所の両方を検索しましたが、どこにも同様の問題が見つからないようです。何かご意見は?

4

1 に答える 1

1

私はsoaplibの「Hello world」の例を試しました。あなたがしたように追加すると機能 from soaplib.core.service import soapします。

soaplib両方をインストールしてsuds使用してpip installいます。

$ pip freeze | grep -e'soaplib\|suds'
soaplib==2.0.0-beta2
suds==0.4

に置き換えられたようsoaplibにリファクタリングされたようです。プロジェクトに自信が持てません。rpclibspyne

于 2012-07-20T13:48:23.170 に答える