0

我第一次尝试使用 pysimplesoap(也是我第一次尝试使用 soap)代码

from pysimplesoap.client import SoapClient

j_location = 'http://api.jasperwireless.com/ws/schema'
j_xsd = 'http://api.jasperwireless.com/ws/schema/JasperAPI.xsd'
j_echo_wsdl = 'http://api.jasperwireless.com/ws/schema/Echo.wsdl'
j_billing_wsdl = 'http://api.jasperwireless.com/ws/schema/Billing.wsdl'

print 'Creating client'
myclient = SoapClient(wsdl=j_echo_wsdl)
print 'Target Namespace', myclient.namespace

错误 RuntimeError: No scheme given for url: JasperAPI.xsd

我不确定我应该如何解决这个错误。

4

1 回答 1

0

我想问题是因为“JasperAPI.xsd”在 WSDL 中被引用为本地文件:

<xs:import namespace="http://api.jasperwireless.com/ws/schema" schemaLocation="JasperAPI.xsd"/>

我不完全确定schemaLocation应该如何工作。至少有些软件会自动转换

schemaLocation="JasperAPI.xsd"

进入

schemaLocation="http://api.jasperwireless.com/ws/schema/JasperAPI.xsd"

但至少 libxml2 - 大多数(全部?)Python SOAP 实现都使用它 - 不这样做。

作为一次性快速修复,您可以尝试将 JasperAPI.xsd 放在本地工作目录中。

于 2014-11-23T01:28:38.950 回答