我正在使用SUDS使用此代码调用SOAP:
client = Client("https://xyz.rwth.de/SecuredDataService/SecuredData?wsdl",location="https://xyz.rwth.de/SecuredDataService/SecuredData",cache=None)
对于HTTP请求,类似于上述代码的请求有效(没有上述请求中的位置部分和正确的HTTP URL),但对于HTTPS,它失败并给出以下错误。
DEBUG:suds.wsdl:阅读wsdl: https://xyz.rwth.de/SecuredDataService/SecuredData?wsdl ......
DEBUG:suds.xsd.sxbasic:导入:0x1025f5710,导入 NS = “http://secured.services.xyz123.org/”, 位置= “http://xyz.rwth.de:7070/SecuredDataService/SecuredData?xsd=1”
DEBUG:suds.transport.http:开口 (http://xyz.rwth.de:7070/SecuredDataService/SecuredData?xsd=1)
错误:django.request:内部服务器错误:/XYZ12/index.html /
我收到urlopen error [Errno 60] Operation timed out
基本上,日志文件显示未使用location
参数,而是使用了WSDL文件中指定的位置(即http://xyz.rwth.de:7070/SecuredDataService/SecuredData?xsd=1)。为什么会这样,即使SUDS文档明确指出:location: This overrides the service port address URL defined in the WSDL.
?
编辑:添加cache=None
后,将调用正确的位置,并在日志文件中打印整个WSDL。但是,之后,日志文件中会打印相同的错误(如上所述)。