Zeep ошибка: запросы - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь получить некоторые данные из файла 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, который работает, если вы спросите

...