Невозможно использовать службу. NET WCF в Python - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь получить доступ к веб-службе. NET WCF из Python и получаю следующую ошибку - сможет ли кто-нибудь сообщить мне, что я делаю неправильно:

File "C:\temp\anaconda3\lib\site-packages\suds\mx\literal.py", line 87, in start
               raise TypeNotFound(content.tag)
suds.TypeNotFound: Type not found: 'authToken'

Ниже приведен код python, который у меня есть:

import uuid
from suds.client import Client
from suds.xsd.doctor import Import, ImportDoctor

url = 'http://something/something?wsdl'
imp = Import('http://www.w3.org/2001/XMLSchema', location='http://www.w3.org/2001/XMLSchema.xsd')
imp = Import('http://schemas.xmlsoap.org/soap/encoding/')
imp = Import('http://schemas.xmlsoap.org/soap/encoding/')
imp.filter.add('http://tempuri.org/')
doctor = ImportDoctor(imp)
client = Client(url, doctor=doctor, headers={'Content-Type': 'application/soap+xml'})
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
logging.getLogger('suds.xsd.schema').setLevel(logging.DEBUG)
logging.getLogger('suds.wsdl').setLevel(logging.DEBUG)
client.set_options

myMethod = client.factory.create('myMethod')
myMethod.authToken = uuid.UUID('xxxxxxxx-35f4-4b7b-accf-yyyyyyyyyyyy')
print(f'CLIENT: {client}')
print(f'myMethod: {myMethod}')
ls_Token = client.service.myMethod(myMethod)
print(f'ACCESSTOKEN: {ls_Token}')

Ответы [ 2 ]

1 голос
/ 30 июля 2020

Нам не удалось заставить его работать с SOAP WCF, и нам пришлось преобразовать его в службу на основе REST, чтобы заставить его работать. Python кажется, лучше работает с REST-сервисом.

1 голос
/ 09 июля 2020

Создайте объект ResponseData, тип определен в wsdl, если есть несколько схем, вам нужно добавить префикс, например ns0, ns1, et c.

ResponseData = client.factory.create('ns1:ResponseData')
ResponseData.token = "Test"

Убедитесь, что свойства созданного вами объекта существуют. Вы можете просмотреть свойства объекта после успешного создания объекта.

ResponseData = client.factory.create('ns1:ResponseData')
ResponseData.token = "Test"
print ResponseData

Следующее изображение является свойством объекта ResponseData:

enter image description here

If I use the following code I will get the same error as you:

ResponseData = client.factory.create('ns1:ResponseData')
ResponseData.authToken = "Test"

введите описание изображения здесь

Итак, вам нужно проверить, имеет ли объект myMethod свойство authToken.

...