Python 字符串有效负载中XML字符的soaplib问题

Python 字符串有效负载中XML字符的soaplib问题,python,django,soap,wsgi,Python,Django,Soap,Wsgi,我使用soaplib创建了一个简单的soapweb服务,遇到了一个问题,即发送的SOAP参数(包括符号或尖括号)被忽略,即使在转义时也是如此 无论将方法设置为接受基元字符串还是“any”类型的基元,引入的任何字符都会导致此类型的webfault(使用sud): suds.WebFault:服务器引发的错误:“my_method()正好接受2个参数(给定1个)” 现在,这里是一个方法,它删除了用于存储结果的附加代码: @soapmethod(soap_types.String, _returns=

我使用soaplib创建了一个简单的soapweb服务,遇到了一个问题,即发送的SOAP参数(包括符号或尖括号)被忽略,即使在转义时也是如此

无论将方法设置为接受基元字符串还是“any”类型的基元,引入的任何字符都会导致此类型的webfault(使用sud):

suds.WebFault:服务器引发的错误:“my_method()正好接受2个参数(给定1个)”

现在,这里是一个方法,它删除了用于存储结果的附加代码:

@soapmethod(soap_types.String, _returns=soap_types.Boolean)
def my_method_(self, sample):
    return True
用任何简单字符串调用此方法都可以,例如在肥皂水中

suds\u object.service.my\u方法('Hello World')

结果是“真的”。但添加任何符号和或角括号,例如

suds\u object.service.my\u方法('Hello&World')

提出了一个例外。打开日志后,我可以看到suds正在转义这些字符。到目前为止,我已经能够找出问题并不是在原始的层次上,我也无法找出问题在哪里或是什么地方。这使得通过服务发送XML有效负载变得相当困难

所使用的类是SimpleWSGisoAPAP的一个子类,该方法被用作Django视图。我注意到,当尝试使用soaplib客户端库时,它工作得很好

我在python中使用“更简单”的soap库时遇到了问题(特别是sud)。不久前我有一个问题,导致我改用Soapy,而一个类似于你的问题刚刚消失


这个问题对于使用wireshark(或google的“soap调试器”)查看较低级别上发生的情况也有很好的建议。

问题绝对不是soaplib,而是Django代码。该代码正在读取
request.POST.items()
,原因是它在任何特殊字符(例如=,&,>)处截断了SOAP请求。切换到,更新了,并解决了引发的参数错误和lxml引发的相关Unicode ValueErrors。

+1用于指出肥皂水因素。将尝试与其他一些客户-我主要关心的是服务。如果你这样做,请在这里传递你的结果。我很好奇。我最终按照我的回答进行了编辑,并且能够对服务使用sud和第三方SOAP客户端()。