首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python web服务:使用ZSI从服务器返回错误

python web服务:使用ZSI从服务器返回错误
EN

Stack Overflow用户
提问于 2009-01-15 14:24:19
回答 2查看 1.6K关注 0票数 2

我对为web服务编写一个python客户端很感兴趣,并且出于测试的目的,如果有一个简单的存根服务器也会非常有趣。我使用的是python 2.3和ZSI 2.0。

我的问题是我没有设法从服务器返回异常。

如果我在wsdl中引发用于soap错误类型的异常,我会得到TypeError的异常必须是类、实例或字符串(已弃用),而不是EmptyStringException_Def。我认为这意味着错误对象不是Exception的子类,但是以这种方式修改生成的代码没有帮助-当然,不必修改生成的代码会更好:)

如果我将错误对象作为响应的一部分返回,它将被忽略。

我在ZSI中找不到任何关于故障处理的文档。有什么提示吗?

以下是一个非常简单的服务的服务器示例代码,其中只有一个方法spellBackwards,如果输入字符串为空,则该方法应返回soap错误:

代码语言:javascript
复制
#!/usr/bin/env python
from ZSI.ServiceContainer import AsServer
from SpellBackwardsService_services_server import *
from SpellBackwardsService_services_types import *
class SpellBackwardsServiceImpl(SpellBackwardsService):
    def soap_spellBackwards(self, ps):
        response = SpellBackwardsService.soap_spellBackwards(self, ps)
        input = self.request._in
        if len(input) != 0:
            response._out = input[::-1]
        else:
            e = ns0.EmptyStringException_Def("fault")
            e._reason = "Empty input string"

            # The following just produces an empty return message:
            # response._fault = e

            # The following causes TypeError
            # raise e

        return response

AsServer(port=8666, services=[SpellBackwardsServiceImpl(),])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-19 09:22:08

我已经在这个ZSI Cookbook中找到了答案,作者是Chris Hoobs,链接在ZSI home page的底部:

5.4异常

一个棘手的问题是如何在服务器上生成故障。使用提供的ZSI v2.0代码,这是不可能的。

我假设这是正确的,因为论文是从项目主页链接的。

本文还提出了一种解决方法,即修补ZSI发行版中的Fault.py文件。

我测试了这个变通方法,它像承诺的那样工作;打补丁库对我来说是可以接受的解决方案,因为我只需要为测试目的生成一个服务器(即,我不需要分发打补丁的库)。

票数 1
EN

Stack Overflow用户

发布于 2009-01-15 17:58:22

很抱歉我不能回答这个问题。

我和ZSI斗争了一段时间。

我现在使用的是SUDS:https://fedorahosted.org/suds/wiki,一切都变得简单多了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/446912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档