2024-07-03 04:26:57 发布
网友
我正在构建python客户机应用程序,以使用sudspython从web服务中使用数据。 现在我可以进行远程呼叫并获得响应。 我的反应是,现在的问题是100Mb的大小。 我已经请求WebService提供者更新API,这将允许我请求me模型的部分内容,但目前运气不太好。在
请建议如何将suds客户端配置为:
对于手头的任务,我找到了部分问题的解决方案——我正在使用suds.plugin.MessagePlugin实现来清除savewebservice响应负载,并防止suds将其解析为DOM。这是我最初问题中的第2项:
suds.plugin.MessagePlugin
avoid running suds.sax.parser and do not build DOM object containing whole response tree
下面是在公共Web服务中使用这种方法的示例。在
查看gist中的完整代码
import suds class PayloadInterceptor(suds.plugin.MessagePlugin): def __init__(self, *args, **kwargs): self.last_payload = None def received(self, context): #recieved xml as a string print "%s bytes received" % len(context.reply) self.last_payload = context.reply #clean up reply to prevent parsing context.reply = "" return context if __name__=='__main__': wsurl = "http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL" payload_interceptor = PayloadInterceptor() client = suds.client.Client(wsurl, plugins=[payload_interceptor]) print client res = client.service.CapitalCity("NL") print "received %s bytes" % len(payload_interceptor.last_payload) print "parsed result: %s" % res print "response payload: %s" % payload_interceptor.last_payload
产出:
您可以使用retxml选项,该选项使sud返回原始XML响应,绕过解析和缓慢的对象树构建。阅读更多信息: https://fedorahosted.org/suds/ticket/257。在
retxml
对于手头的任务,我找到了部分问题的解决方案——我正在使用
suds.plugin.MessagePlugin
实现来清除savewebservice响应负载,并防止suds将其解析为DOM。这是我最初问题中的第2项:下面是在公共Web服务中使用这种方法的示例。在
查看gist中的完整代码
产出:
^{pr2}$您可以使用
retxml
选项,该选项使sud返回原始XML响应,绕过解析和缓慢的对象树构建。阅读更多信息: https://fedorahosted.org/suds/ticket/257。在相关问题 更多 >
编程相关推荐