我正在尝试从地址为 https://recette.alcyon.com/webservices?wsdl 的 wsdl 文件中检索一些数据。我已经尝试过可以正常工作的Php代码,现在我需要使用Python 3,这就是为什么我要使用 zeep 库的原因。
代码如下:
from hashlib import sha1
from base64 import b64encode
import binascii
class RevCrypt:
def __init__(self,key, data):
self.key = sha1(key.encode('utf-8')).hexdigest()
self.data = data
def code(self, the_string):
self.data = ''
for i in range(0, len(the_string)):
if(i==0):
kc = self.key[-1:]
else:
kc = self.key[((i % len(self.key))-1): (((i % len(self.key))-1)+1)]
self.data += chr(ord(the_string[i]) + ord(kc))
self.data = b64encode(self.data.encode('latin-1'))
return self.data.decode()
import datetime
from zeep import Client, Settings
from zeep.plugins import HistoryPlugin
code_client = '108343'
public_key = 'PLACEDESVETOS'
password = 'KoeME'
private_key = 'W3b23rvic3sv3t0s'
today = datetime.date.today().strftime("%Y%m%d")
arg = ''
arg = today+'$'+code_client+private_key
Rev = RevCrypt(arg, '')
token = Rev.code(password)
auth_token = public_key+' '+code_client+':'+token
custom_http_headers = {"Authorization" : auth_token}
history = HistoryPlugin()
client = Client('https://recette.alcyon.com/webservices?wsdl', plugins=[history])
with client.settings(extra_http_headers=custom_http_headers):
response = client.service.getalladresse(code_client)
print(history.last_sent)
因此,运行此代码会出现以下错误:
requests.exceptions.MissingSchema:无效的URL'/ webservices':未提供任何模式。也许您是说http:///webservices?
这让我认为zeep会“忘记”使用完整的URL来访问服务。但是我看不到更多,我想查看zeep发送的完整请求,以将其与从Php代码发送的请求(有效)进行比较,因此您使用了 history 插件,如您所见在我的代码中,但似乎没有显示任何请求错误(我认为这仅适用于有效的请求)。
非常感谢
Aymeric
p.s:如果您提出要求,我也可以提供可以使用的Php代码