У меня есть API XML/WCF, с которым мне нужно что-то реализовать. Клиентская библиотека API предоставляется только как C# в Windows, и наша компания не занимается ни C#, ни Windows. Сейчас я экспериментирую с Python и zeep. API — это API системы контроля доступа Symmetry, если кому-то интересно.
Я могу подключиться к серверу и прочитать структуру wsdl. Это работает:
URL='https://localhost/smsXMLWebService/SMSXMLWebService.svc?singleWsdl'
URL2='https://localhost/smsXMLWebService/smsXMLWebService.svc'
session = Session()
session.verify = False
transport = Transport(session=session)
self.client = zeep.Client(URL, transport=transport)
self.service = self.client.create_service('{http://tempuri.org/}WSHttpBinding_ISMSXMLWebService', URL2)
Теперь все, начиная с этого момента, потребует входа на платформу. В примере кода C# это делается следующим образом:
G4TAPI = new SMSXMLWebServiceClient();
G4TAPI.ClientCredentials.UserName.UserName = txtUserName.Text
G4TAPI.ClientCredentials.UserName.Password = txtPassword.Text.ToLower();
G4TAPI.G4TLogin();
У моего self.service
теперь есть вызов G4TLogin(), и, кажется, он пытается подключиться, когда я прошиваю трафик. Но как мне установить имя пользователя и пароль, поскольку они не передаются в качестве параметров методу G4TLogin()?
Это не работает:
self.service.ClientCredentials.UserName.UserName = "api"
Это очень далеко от моей зоны комфорта, и я могу использовать здесь неправильную терминологию. Любые идеи?
Сообщение об ошибке
AttributeError: Service has no operation 'ClientCredentials'