soapplibのdjango webserverで
8092 ワード
前にはsudsを使ってwebservice Pythonはhttpsプロトコルに基づくSOAP WebServiceを呼び出します。を呼び出す方法が書かれていましたが、この記事ではSOAP WebServiceを開発するにはどう使いますか?
第一歩はもちろんインストールの問題です。
ダウンロードソフト:
これはダウンロードです。soapplib 2.0-beta 2をダウンロードしました。これからはdjangosnippetを使うつもりです。2.0に基づいています。
開発環境(Mac OS X 10.7.4)でのインストールは順調です。
*On**Linux*(and most other well-behaved operating systems)、`easury_install`will maage to build the source distribution as libxml 2 and libxslet arproperlyinstalld、includidevelopment packagages、i.e.header files、etc.Use your package package management aattttttttdededededededededededededededededededededededededededededededededededededededededelolololololololololololololololololololololololololololotttttttttttttttttttttttttthey are installed.
その「1」を外して、インストールに成功しました。
次はSOAPウェブservice with soapplib 2.0というものをダウンロードします。最近子供の日が過ぎたばかりで、風が強いので、orgドメインの多くの海外サイトが壁に張られているようです。
Usage is the same as before:my_soap_service=Django Soappp([MySOAPService])、_name_
それは前のバージョンも非常に簡単で、これらの引用はこのバージョンではすでに移動しています。やむをえず、soapplib 2.0のソースコードを読んで、対応する位置を修正します。
彼より詳しいUsageを書きましょう。
View.pyのコード:
urls.pyのコード:
以下でテストします。
(1)sudsの取り付け
pythonをインストール
setuptools-0.6 c 9.tar.gzをダウンロードします。
ハpython setup.py install
python-suds-0.4.tar.gzをダウンロードします。
ハpython setup.py install
pythonコマンドラインを実行します。
>>from suds.client import Client
>>>ハローclient=Cient('http://127.0.0.1:8080/
>>レスリング=helloclient.service.Hello World(「carlos」)
>>print relt
ハローcarlos
第一歩はもちろんインストールの問題です。
ダウンロードソフト:
これはダウンロードです。soapplib 2.0-beta 2をダウンロードしました。これからはdjangosnippetを使うつもりです。2.0に基づいています。
開発環境(Mac OS X 10.7.4)でのインストールは順調です。
$ python setup.py install
しかし、テスト環境(CentOS)では、上記のセットアップ時報の誤りを実行することができます:error:Setup script exited with error:command'gcc'failed with Exit status 1。オンラインで見つけた解決策はlibxml 2、libxml 2-devel、libxslet-develをインストールしてyumでインストールします。 $yum install libxml2 $yum install libxml2-devel $yum install libxslt-devel
このようなパッケージをインストールする際にはap-getを使いますが、CentOSはyumを使います。ap-getでインストールされているのを見たらap-get install libxml 2-devなどと言います。devをdevelに換えるだけで、yumをcentosやredhatでインストールできます。ネットでいくつかのところのlibxsletのインストールは全部ap-get install libxslat 1-devですが、ユムのカバンにはその“1”がありません。その後、私はlxml 2.3.4のソースバッグをダウンロードしました。*On**Linux*(and most other well-behaved operating systems)、`easury_install`will maage to build the source distribution as libxml 2 and libxslet arproperlyinstalld、includidevelopment packagages、i.e.header files、etc.Use your package package management aattttttttdededededededededededededededededededededededededededededededededededededededededelolololololololololololololololololololololololololololotttttttttttttttttttttttttthey are installed.
その「1」を外して、インストールに成功しました。
次はSOAPウェブservice with soapplib 2.0というものをダウンロードします。最近子供の日が過ぎたばかりで、風が強いので、orgドメインの多くの海外サイトが壁に張られているようです。
from soaplib.core import Application
from soaplib.core.server.wsgi import Application as WSGIApplication
from django.http import HttpResponse
class DjangoSoapApp(WSGIApplication):
"""
Generic Django view for creating SOAP web services (works with soaplib 2.0)
Based on http://djangosnippets.org/snippets/2210/
"""
csrf_exempt = True
def __init__(self, services, tns):
"""Create Django view for given SOAP soaplib services and tns"""
return super(DjangoSoapApp, self).__init__(Application(services, tns))
def __call__(self, request):
django_response = HttpResponse()
def start_response(status, headers):
django_response.status_code = int(status.split(' ', 1)[0])
for header, value in headers:
django_response[header] = value
response = super(DjangoSoapApp, self).__call__(request.META, start_response)
django_response.content = '
'.join(response)
return django_response
djangosnippets.orgはいいウェブサイトで、多くの有用なdjangoの小さい部品があります。欠点は、わけがわからない壁やUsageが簡単すぎて、怠けにくいです。彼のソースコードを読まずに直接使用します。このsnippetのUsageは一行だけです。Usage is the same as before:my_soap_service=Django Soappp([MySOAPService])、_name_
それは前のバージョンも非常に簡単で、これらの引用はこのバージョンではすでに移動しています。やむをえず、soapplib 2.0のソースコードを読んで、対応する位置を修正します。
彼より詳しいUsageを書きましょう。
View.pyのコード:
# ,soablib2.0 0.9+
from soaplib.core.model.primitive import Boolean, String
from soaplib.core.service import DefinitionBase, rpc
# the class with actual web methods
class MySOAPService(DefinitionBase):
@rpc(String, String, _returns=Boolean)
def Test(self, f1, f2):
return True
@rpc(String, _returns=String)
def HelloWorld(self, name):
return 'Hello %s!' %name
my_soap_service = DjangoSoapApp([MySOAPService], 'laonan.net')
urls.pyのコード:
url(r'^my-soap-service/service', 'yourproject.yourapp.views.my_soap_service'),
url(r'^my-soap-service/service.wsdl', 'yourproject.yourapp.views.my_soap_service'),
上記の二つの住所は必ずペアリングします。できればwsdlドキュメントでsoap:addressノードのlocation属性を確認してください。最初のurlはserviceを少なく配合しました。soapplib 2はbeta版であると思っていましたが、どうしていつも見つけられないですか?しばらく調べてからやっとここで間違えました。以下でテストします。
(1)sudsの取り付け
pythonをインストール
setuptools-0.6 c 9.tar.gzをダウンロードします。
ハpython setup.py install
python-suds-0.4.tar.gzをダウンロードします。
ハpython setup.py install
pythonコマンドラインを実行します。
>>from suds.client import Client
>>>ハローclient=Cient('http://127.0.0.1:8080/
my-soap-service/service
/?wsdl'>>レスリング=helloclient.service.Hello World(「carlos」)
>>print relt
ハローcarlos