首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >suds.TypeNotFound错误

suds.TypeNotFound错误
EN

Stack Overflow用户
提问于 2015-09-01 08:29:34
回答 2查看 2K关注 0票数 2

我试图连接到http://data.opensolution.se/index.php?wsdl并使用以下代码:

代码语言:javascript
复制
from suds.client import Client
from suds.xsd.doctor import ImportDoctor, Import

url = 'http://data.opensolution.se/index.php?wsdl'
imp = Import('http://www.w3.org/2001/XMLSchema',
location='http://www.w3.org/2001/XMLSchema.xsd')
imp.filter.add('http://data.opensolution.se/')
client = Client(url, doctor=ImportDoctor(imp))

但是它抛出了一个错误:

suds.TypeNotFound TypeNotFound:类型未找到:'(xml,http://www.w3.org/2001/XMLSchema,)‘

我还尝试使用我在imp.filter.add中添加的内容,例如:

代码语言:javascript
复制
imp.filter.add('http://data.opensolution.se/soap/OSDataService')

我开始使用ImportDoctor时,从5年前的一篇文章中获得了以下信息:SOAP suds和可怕的模式类型未找到错误

在那里找到的代码有效:

代码语言:javascript
复制
from suds.client import Client
from suds.xsd.doctor import Import, ImportDoctor

url = 'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl'
imp = Import('http://www.w3.org/2001/XMLSchema',
    location='http://www.w3.org/2001/XMLSchema.xsd')
imp.filter.add('http://WebXml.com.cn/')
client = Client(url, doctor=ImportDoctor(imp))

正如你所看到的,这是我最初的想法,但对我来说不起作用。

提前谢谢你的建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-01 10:14:33

下面将消除您的Type not found错误:

代码语言:javascript
复制
from suds.client import Client
from suds.xsd.doctor import Import, ImportDoctor
url = 'http://data.opensolution.se/index.php?wsdl'
imp = Import('http://www.w3.org/2001/XMLSchema')
doctor = ImportDoctor(imp)
client = Client(url, doctor=doctor)

但是您可能会遇到这样的错误:https://fedorahosted.org/suds/ticket/239

其结果是:

代码语言:javascript
复制
  File "/usr/local/.virtualenvs/stackoverflow/lib/python2.7/site-packages/suds/xsd/sxbasic.py", line 756, in create
    return fn(schema, root)
  File "/usr/local/.virtualenvs/stackoverflow/lib/python2.7/site-packages/suds/xsd/sxbasic.py", line 376, in __init__
    TypedContent.__init__(self, schema, root)
  File "/usr/local/.virtualenvs/stackoverflow/lib/python2.7/site-packages/suds/xsd/sxbase.py", line 95, in __init__
    self.name = root.get('name')
  File "/usr/local/.virtualenvs/stackoverflow/lib/python2.7/site-packages/suds/sax/element.py", line 234, in get
    attr = self.getAttribute(name, ns)
  File "/usr/local/.virtualenvs/stackoverflow/lib/python2.7/site-packages/suds/sax/element.py", line 404, in getAttribute
    prefix, name = splitPrefix(name)
  File "/usr/local/.virtualenvs/stackoverflow/lib/python2.7/site-packages/suds/sax/__init__.py", line 49, in splitPrefix
    if isinstance(name, basestring) \
RuntimeError: maximum recursion depth exceeded while calling a Python object

所以,也许可以尝试另一个像SOAPpy这样的soap客户机。

用pip安装它:

代码语言:javascript
复制
pip install soappy

下面的例子改编自本教程:服务/内省

代码语言:javascript
复制
>>> from SOAPpy import WSDL
>>> wsdlFile = 'http://data.opensolution.se/index.php?wsdl'
>>> server = WSDL.Proxy(wsdlFile)
>>> server.methods.keys()
[u'GetFlightPrepackById', u'GetMdbArticles', u'CardPurchase', u'GetNewArticleNumber', u'GetAccountingAccounts', u'ExportZ', u'AddBookingQuote', u'DeleteTableBooking', u'GetTravelDepartures', u'SaveCashRegister', u'DecreaseTravelBooking', u'GetEventLog', u'GetCustomersByCategory', u'DeleteCustomer', u'SaveCurrencies', u'GetReportArticleRating', u'GetXReport', u'GetEmployeeBySearch', u'SaveMdbCategories', u'LetoUnlockOrder', u'GetFlightPrepackArticlesByPrepackId', u'GetTableByNo', u'GetOrdersByFlightId', u'RemoveFlightPrepackById', u'GetCustomers', u'GetReports', u'GetCityBreakBooking', u'GetArticleOption', u'AddBookingQuoteArticle', u'GetGiftCardOrdersByOrderId', u'SaveVatAccount', u'GetOrder', u'GetEmployeeCategories', u'GetBooking', u'GetCashRegisterCategoryById', u'AddLoyaltyRecord', u'SaveArticle', u'GetDibsTokens', u'GetCode', u'AddFlightStaffByFlightId', u'GetEventLogCategories', u'SavePaymentAccount', u'GetEmployeeCategoryById', u'RemoveFlightStaffByFlightId', u'GetOrders', u'ResetSamportOrder', u'GetStartPage', u'SaveCurrency', u'GetZArticleReport', u'GetFlightRoutes', u'GetFlightNumberByNumber', u'GetOrdersByDate', u'GetCardTypeByName', u'GetRebateCategories', u'SaveInvoice', u'GetArticles', u'GetTablesByStatus', u'GetCardReportByDate', u'NewCard', u'GetFlightNumberById', u'GetEmployees', u'GetArticleById', u'GetTableCategoryById', u'GetBookingByDate', u'GetCardGroups', u'SaveCardReportTransaction', u'GetArticlesBySearch', u'RegisterBackup', u'GetFlightByZ', u'GetCardTransactions', u'GetOrdersFromInvoice', u'ExportEmployees', u'LetoDeleteOrder', u'CardFill', u'UpdateCard', u'GetEmployeeByWaiterId', u'SaveEmployeeCategory', u'GetTableById', u'SaveAccount', u'DeleteFlightPrepackArticleByPrepackId', u'SaveCustomer', u'GetFlightsByDate', u'SaveStartPageButton', u'GetCardReportBatch', u'GetActiveCodes', u'GetAccountingCategories', u'CCUGetControlCode', u'GetCustomerCategoryById', u'GetSales', u'GetFlightCommission', u'GetEvents', u'ChangeCitybreakBooking', u'AddSamportOrder', u'GetTravelOrders', u'GetCustomerCategories', u'DeleteStartPage', u'LetoGetOpenOrders', u'GetCards', u'GetAccountingPaymentMethods', u'GetGiftCardByMagCardNo', u'GetGiftCardOrdersByGiftCardId', u'CCUGetSerialNumber', u'GetAccountDistributionByReportId', u'GetReportsByDate', u'GetGrandArticleReport', u'GetNewEmployeeNumber', u'GetFlightPrepacksByDelivered', u'LetoAddOrder', u'SaveAccountingVatAccount', u'GetFlightById', u'GetCard', u'GetFlightStaffByFlightId', u'GetCustomerById', u'GetReportByDateAndFlightNr', u'DeleteCurrency', u'GetGiftCardById', u'GetTravelPrice', u'SaveDibsToken', u'GetEventLogTypes', u'GetArticleImage', u'LetoChangeOrder', u'GetFlightPrepacksByFlightId', u'GetXArticleReport', u'LetoGetOrderInfo', u'GetTravelRoutes', u'GetTableOrder', u'AddFlightPrepackArticleByPrepackId', u'GetOrdersByTime', u'GetArticleOptions', u'SaveActiveCode', u'GetFlightPrepacksBySearch', u'GetAccountingAccount', u'SaveCardReportBatch', u'GetRebateCategoriesMap', u'GetGiftCardOrdersByDate', u'GetPlaces', u'GetCustomerBySearch', u'GetLoyaltyRecords', u'GetCardsByCardGroup', u'GetFlightNumbers', u'GetReportsByFlightId', u'GetInvoices', u'DeleteCitybreakBooking', u'ExportArticles', u'GetArticleCategories', u'DeleteSamportOrder', u'GetArticleTypes', u'GetInvoiceById', u'GetAccountingVat', u'GetTravelPrices', u'GetReportById', u'GetMdbCategoriesArticles', u'GetCompanies', u'GetReportByDate', u'GetCompanyById', u'GetCashRegistersByCategory', u'GetCardReportLatest', u'SaveFlightNumber', u'SaveCompany', u'SaveCustomerCategory', u'GetReportHeadersByFlightId', u'GetCashRegistersBySearch', u'ExportOrders', u'GenerateReport', u'GetTravelOrder', u'GetGiftCardsByCustomerId', u'LetoPayByCash', u'SaveMdbArticles', u'GetMdbCategories', u'ExportInvoices', u'SaveArticleOption', u'GetCodes', u'GetOrdersByFilter', u'GetRebateGroups', u'GetGiftCards', u'CreateCitybreakBooking', u'ExportOrdersWithArticles', u'SaveCashRegisterCategory', u'CardCancel', u'GetArticleCategoryById', u'DeleteAccountingAccount', u'GetCodeCategories', u'GetArticlesByCategory', u'GetTravelStops', u'GetCashRegisterById', u'GetTableStatus', u'GetCardGroup', u'CardRefund', u'IncreaseTravelBooking', u'ExportCustomers', u'GetFlightPrepacksByStatus', u'GetFlightsByFlightNr', u'GetAccounts', u'SaveAccountingAccount', u'GetInvoiceByOrderId', u'GetDatabaseName', u'GetTablesByCategoryId', u'GetStartPages', u'GetTableCategories', u'SaveStartPage', u'SaveAccountingPaymentMethodAccount', u'UpdateFlightPrepackArticleByPrepackId', u'GetCashRegisterCategories', u'GetActiveCode', u'SaveTableBooking', u'LetoAbortOrder', u'GetCurrencies', u'GetCashRegisters', u'GetReportsByLimit', u'GetFlightTerminals', u'SaveArticleCategory', u'GetCardTypeById', u'GetTravelOrdersByDeparture', u'SaveEmployee', u'GetRebateCategory', u'GetOrdersByReportId', u'DeleteStartPageButton', u'GetCardByCardNo', u'GetEmployeesByCategory', u'GetEmployeeById', u'DeleteActiveCode', u'GetTables']
>>> callInfo = server.methods['GetTables']
>>> callInfo.inparams
[<wstools.WSDLTools.ParameterInfo instance at 0x2aeaa2823bd8>]
>>> callInfo.inparams[0].name
u'ApiKey'
>>> callInfo.inparams[0].type
(u'http://www.w3.org/2001/XMLSchema', u'string')
>>> callInfo.outparams
[<wstools.WSDLTools.ParameterInfo instance at 0x2aeaa2823c20>]
>>> callInfo.outparams[0].name
u'return'
>>> callInfo.outparams[0].type
(u'http://www.w3.org/2001/XMLSchema', u'string')
票数 2
EN

Stack Overflow用户

发布于 2020-09-14 21:53:39

我遇到了同样的问题,并最终通过更改suds-py3 1.4.1.0客户机来解决这个问题,我使用suds-jurko==0.6。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32326962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档