未找到请求的资源“{spyne.examples.django}”
Requested resource '{spyne.examples.django}' not found
我正在尝试使用 Spyne 在 Django 中开发 soap 服务。我在 Django 应用程序中为应用程序 'Hello_world' 克隆了 spyne,但出现错误。有人可以帮我吗?
我的代码与下面的类似:
app = Application([HelloWorldService], 'spyne.examples.hello.http',
in_protocol=HttpRpc(),
out_protocol=Soap11(),
)
但出现以下错误:
<faultcode>soap11env:Client.ResourceNotFound</faultcode>
<faultstring>Requested resource '{spyne.examples.django}' not found</faultstring>
<faultactor/>
您可能还需要使用 in_protocol Soap11。
from spyne.application import Application
app = Application([HelloWorldService], 'spyne.examples.hello.http',
in_protocol=Soap11(validator='lxml'),
out_protocol=Soap11(),
)
您可以查看参考 link。
没有为根定义处理程序url:
将输入协议切换为 HttpRpc 并执行此操作后:
curl -D - localhost:8000/hello_world/
你得到:
<?xml version='1.0' encoding='UTF-8'?>
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/">
<soap11env:Body>
<soap11env:Fault>
<faultcode>soap11env:Client.ResourceNotFound</faultcode>
<faultstring>Requested resource u'{spyne.examples.django}' not found</faultstring>
<faultactor></faultactor>
</soap11env:Fault>
</soap11env:Body></soap11env:Envelope>
那是因为你没有指定调用哪个方法。
该示例中的 HelloWorldService
定义了 say_hello 函数。你可以这样称呼它。
curl -D - "localhost:8000/hello_world/say_hello"
现在这找到了方法,但由于未验证的输入被传递给您的函数,您得到了回溯(我不会在此处包括)。
如果传递所有参数:
curl -D - "localhost:8000/hello_world/say_hello?times=5&name=Fatemeh"
你得到:
<?xml version='1.0' encoding='UTF-8'?>
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="spyne.examples.django">
<soap11env:Body><tns:say_helloResponse>
<tns:say_helloResult>
<tns:string>Hello, Fatemeh</tns:string>
<tns:string>Hello, Fatemeh</tns:string>
<tns:string>Hello, Fatemeh</tns:string>
<tns:string>Hello, Fatemeh</tns:string>
<tns:string>Hello, Fatemeh</tns:string>
</tns:say_helloResult></tns:say_helloResponse></soap11env:Body></soap11env:Envelope>
您可能希望启用验证以避免 Server
异常。首先我们给输入类型添加Mandatory
标记:
from spyne import M
class HelloWorldService(Service):
@rpc(M(Unicode), M(Integer), _returns=Iterable(Unicode))
def say_hello(ctx, name, times):
for i in range(times):
yield 'Hello, %s' % name
然后我们启用软验证(HttpRpc
唯一的)
app = Application([HelloWorldService], 'spyne.examples.hello.http',
in_protocol=HttpRpc(validator='soft'),
out_protocol=Soap11(),
)
服务器重启后如下:
curl -D - "localhost:8000/hello_world/say_hello"
你得到:
<class 'spyne.model.complex.say_hello'>.name member must occur at least 1 times.
希望对您有所帮助!
我正在尝试使用 Spyne 在 Django 中开发 soap 服务。我在 Django 应用程序中为应用程序 'Hello_world' 克隆了 spyne,但出现错误。有人可以帮我吗?
我的代码与下面的类似:
app = Application([HelloWorldService], 'spyne.examples.hello.http',
in_protocol=HttpRpc(),
out_protocol=Soap11(),
)
但出现以下错误:
<faultcode>soap11env:Client.ResourceNotFound</faultcode>
<faultstring>Requested resource '{spyne.examples.django}' not found</faultstring>
<faultactor/>
您可能还需要使用 in_protocol Soap11。
from spyne.application import Application
app = Application([HelloWorldService], 'spyne.examples.hello.http',
in_protocol=Soap11(validator='lxml'),
out_protocol=Soap11(),
)
您可以查看参考 link。
没有为根定义处理程序url:
将输入协议切换为 HttpRpc 并执行此操作后:
curl -D - localhost:8000/hello_world/
你得到:
<?xml version='1.0' encoding='UTF-8'?>
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/">
<soap11env:Body>
<soap11env:Fault>
<faultcode>soap11env:Client.ResourceNotFound</faultcode>
<faultstring>Requested resource u'{spyne.examples.django}' not found</faultstring>
<faultactor></faultactor>
</soap11env:Fault>
</soap11env:Body></soap11env:Envelope>
那是因为你没有指定调用哪个方法。
该示例中的 HelloWorldService
定义了 say_hello 函数。你可以这样称呼它。
curl -D - "localhost:8000/hello_world/say_hello"
现在这找到了方法,但由于未验证的输入被传递给您的函数,您得到了回溯(我不会在此处包括)。
如果传递所有参数:
curl -D - "localhost:8000/hello_world/say_hello?times=5&name=Fatemeh"
你得到:
<?xml version='1.0' encoding='UTF-8'?>
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="spyne.examples.django">
<soap11env:Body><tns:say_helloResponse>
<tns:say_helloResult>
<tns:string>Hello, Fatemeh</tns:string>
<tns:string>Hello, Fatemeh</tns:string>
<tns:string>Hello, Fatemeh</tns:string>
<tns:string>Hello, Fatemeh</tns:string>
<tns:string>Hello, Fatemeh</tns:string>
</tns:say_helloResult></tns:say_helloResponse></soap11env:Body></soap11env:Envelope>
您可能希望启用验证以避免 Server
异常。首先我们给输入类型添加Mandatory
标记:
from spyne import M
class HelloWorldService(Service):
@rpc(M(Unicode), M(Integer), _returns=Iterable(Unicode))
def say_hello(ctx, name, times):
for i in range(times):
yield 'Hello, %s' % name
然后我们启用软验证(HttpRpc
唯一的)
app = Application([HelloWorldService], 'spyne.examples.hello.http',
in_protocol=HttpRpc(validator='soft'),
out_protocol=Soap11(),
)
服务器重启后如下:
curl -D - "localhost:8000/hello_world/say_hello"
你得到:
<class 'spyne.model.complex.say_hello'>.name member must occur at least 1 times.
希望对您有所帮助!