Django SOAP client



我需要实现一个简单的SOAP服务器,以便外部公司向我发送通知。

他们给我发了一个WSDL文件。我开始尝试通过使用spyne编写相同的模型来重新实现这个文件。这是一项乏味的工作。

既然我不能定义自己的模型(wsdl是从外部提供的(,有更好的方法吗?我只有几个RPC方法要实现。

这不是一种使用WSDL文件来解析django请求、提取我需要的东西(方法调用和参数(并为它们的请求构建适当响应的方法吗?

服务必须使用纯SOAP请求/响应。

您基本上有两个选项:

  • 使用类似spyne的SOAP库。正如你已经注意到的那样,这并不是很有趣,而且往往有点重量级(比如在不疼的时候绑手(
  • 做它";"手工">

我对";"手工";是这样的:如果您需要实现的服务不需要其他WS-*规范(尽管如果需要的话,我怀疑spyne在这方面是否有很大帮助(,而且它只是简单的SOAP请求和响应,那么您可以将它们视为带有XML负载的HTTPPOST请求,因为它们就是这样。您收到一个XML请求并生成一个XML响应。

您甚至可以使用类似lxml的东西来根据XML模式验证SOAP请求,以确保外部公司正确发送了内容(您已经在他们发送给您的WSDL中拥有了所需元素和操作的XML模式,因此您可以从那里复制这些部分;添加SOAP信封的规则不会太困难(。您可以使用更简单的SOAP库来构建消息,甚至可以使用字符串串联来实现穷人的解决方案。

您不需要从收到的WSDL实现整个服务,只需将WSDL用作如何正确格式化XML消息的资源即可。剩下的只是处理HTTP请求和响应。

最新更新