J'essaie de faire un petit service web "Hello World" avec Django après quelques tutoriels, mais je suis toujours en train de faire la même barrière. J'ai défini un view.py et soaplib_handler.py:Django soaplib error
view.py:
from soaplib_handler import DjangoSoapApp, soapmethod, soap_types
class HelloWorldService(DjangoSoapApp):
__tns__ = 'http://saers.dk/soap/'
@soapmethod(_returns=soap_types.Array(soap_types.String))
def hello(self):
return "Hello World"
soaplib_handler.py:
from soaplib.wsgi_soap import SimpleWSGISoapApp
from soaplib.service import soapmethod
from soaplib.serializers import primitive as soap_types
from django.http import HttpResponse
class DjangoSoapApp(SimpleWSGISoapApp):
def __call__(self, request):
django_response = HttpResponse()
def start_response(status, headers):
status, reason = status.split(' ', 1)
django_response.status_code = int(status)
for header, value in headers:
django_response[header] = value
response = super(SimpleWSGISoapApp, self).__call__(request.META, start_response)
django_response.content = "\n".join(response)
return django_response
Et il semble que le « réponse = super ... "line me donne des ennuis. Lorsque je charge /hello_world/services.wsdl mappée dans url.py je reçois:
AttributeError à /hello_world/service.wsdl objet « module » n'a pas d'attribut « tostring »
Pour le message d'erreur complet , voir ici: http://saers.dk:8000/hello_world/service.wsdl
Avez-vous une suggestion quant à pourquoi je reçois cette erreur? Et où est défini ElementTree?
Oui, vous avez raison. En appelant http://saers.dk:8000/hello_world/service.wsdl il n'appelle pas la méthode hello(), donc il y a un problème différent. – zinovii