Я смог выяснить, как выполнить отчеты, загрузите файлы, перечислите папки, и т.д. на JasperServer с помощью Python с SOAPpy и xml.dom minidom.
Вот пример, выполняют запрос отчета, который работает:
repositoryURL = 'http://user@pass:myjasperserver:8080/jasperserver/services/repository'
repositoryWSDL = repositoryURL + '?wsdl'
server = SOAPProxy(repositoryURL, repositoryWSDL)
print server._ns(repositoryWSDL).runReport('''
PDF
bar
''')
Однако я испытываю затруднения при форматировании моих запросов правильно на раздел "ReportScheduler" сервера. Я консультировался с документацией, расположенной здесь (http://jasperforge.org/espdocs/docsbrowse.php?id=74&type=docs&group_id=112&fid=305), и попробовал модель мои запросы после их образцов без удачи (см. страницу 27).
Вот два примера, которые я попробовал, которые оба возвращают ту же ошибку:
schedulingURL = 'http://user@pass:myjasperserver:8080/jasperserver/services/ReportScheduler'
schedulingWSDL = schedulingURL + '?wsdl'
server = SOAPProxy(schedulingURL, schedulingWSDL)
# first request
print server._ns(schedulingWSDL).scheduleJob('''
/reports/baz
baz
2009-05-15T15:45:00.000Z
1
baz
PDF
/reports_generated
true
false
my@email.com
test
test
SEND_ATTACHMENT
''')
# second request (trying different format here)
print server._ns(schedulingWSDL).scheduleJob('''
/reports/baz
baz
2008-10-09T09:25:00.000Z
1
test
PDF
/reports_generated
false
false
''')
Каждый из этих запросов приводит к ошибкам:
SOAPpy.Types.faultType: class com.jaspersoft.jasperserver.ws.scheduling.Job):
: {'hostname': 'myhost'}>
Любая справка/руководство ценилась бы.Спасибо.
У меня было много неудач с минидомом. Я рекомендую вам использовать lxml . У меня не было опыта работы с самим мылом, поэтому я не могу говорить об остальной части проблемы.
Ничего не зная о Джаспере, я могу гарантировать вам, что вам лучше заменить жестко запрограммированные запросы SOAP простым клиентом на основе отличная библиотека пены . Он абстрагируется от SOAP и оставляет вам безупречный доступ к API.
easy_install suds
и docs должно быть достаточно, чтобы вы начали.