Я пытаюсь получить некоторые данные из файла wsdl по этому адресу https://recette.alcyon.com/webservices?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)
Так, запустив этот код, я получаю следующую ошибку:
reports.exceptions.MissingSchema: неверный URL-адрес '/ webservices': схема не указана. Возможно, вы имели в виду http: /// webservices ?
Что заставляет меня думать, что Zeep "забывает" использовать полный URL для доступа к сервису. Но я не могу видеть дальше, и я хотел увидеть полный запрос, отправленный Zeep, чтобы сравнить его с запросом, отправленным из кода Php (который работал), поэтому я использовал плагин history , как вы можете видеть в мой код, но он, похоже, не показывает ошибку запроса (я думаю, что это только для запросов, которые работали).
Большое спасибо
Aymeric
p.s: Я также могу дать код Php, который работает, если вы спросите