Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python通过SOAP调度JasperServer报告_Python_Soap_Jasper Reports_Jasperserver - Fatal编程技术网

使用Python通过SOAP调度JasperServer报告

使用Python通过SOAP调度JasperServer报告,python,soap,jasper-reports,jasperserver,Python,Soap,Jasper Reports,Jasperserver,我能够理解如何在JasperServer上使用Python和SOAPpy以及xml.dom minidom运行报告、下载文件、列出文件夹等 下面是一个执行报告请求的示例,它可以工作: repositoryURL = 'http://user@pass:myjasperserver:8080/jasperserver/services/repository' repositoryWSDL = repositoryURL + '?wsdl' server = SOAPProxy(repository

我能够理解如何在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('''
  <request operationName="runReport" locale="en">
    <argument name="RUN_OUTPUT_FORMAT">PDF</argument>
    <resourceDescriptor name="" wsType="" uriString="/reports/baz">
      <label>null</label>
      <parameter name="foo">bar</parameter>
    </resourceDescriptor>
  </request>
''')
repositoryURL='1〕http://user@pass:myjasperserver:8080/jasperserver/services/repository'
repositoryWSDL=repositoryURL+“?wsdl”
服务器=SOAPProxy(repositoryURL、repositoryWSDL)
打印服务器。\n(repositoryWSDL).runReport(“”)
),并尝试在他们的样本之后模拟我的请求,但没有成功(参见第27页)

下面是我尝试过的两个示例,它们都返回相同的错误:

schedulingURL = 'http://user@pass:myjasperserver:8080/jasperserver/services/ReportScheduler'
schedulingWSDL = schedulingURL + '?wsdl'
server = SOAPProxy(schedulingURL, schedulingWSDL)

# first request
print server._ns(schedulingWSDL).scheduleJob('''
  <request operationName="scheduleJob" locale="en">
    <job>
      <reportUnitURI>/reports/baz</reportUnitURI>
      <label>baz</label>
      <description>baz</description>
      <simpleTrigger>
        <startDate>2009-05-15T15:45:00.000Z</startDate>
        <occurenceCount>1</occurenceCount>
      </simpleTrigger>
      <baseOutputFilename>baz</baseOutputFilename>
      <outputFormats>
        <outputFormats>PDF</outputFormats>
      </outputFormats>
      <repositoryDestination>
        <folderURI>/reports_generated</folderURI>
        <sequentialFilenames>true</sequentialFilenames>
        <overwriteFiles>false</overwriteFiles>
      </repositoryDestination>
      <mailNotification>
        <toAddresses>my@email.com</toAddresses>
        <subject>test</subject>
        <messageText>test</messageText>
        <resultSendType>SEND_ATTACHMENT</resultSendType>
      </mailNotification>
    </job>
  </request>''')

# second request (trying different format here)
print server._ns(schedulingWSDL).scheduleJob('''
  <ns1:scheduleJob soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://www.jasperforge.org/jasperserver/ws">
  <job xsi:type="ns1:Job">
    <reportUnitURI xsi:type="xsd:string">/reports/baz</reportUnitURI>
    <username xsi:type="xsd:string" xsi:nil="true"/>
    <label xsi:type="xsd:string">baz</label>
    <description xsi:type="xsd:string">baz</description>
    <simpleTrigger xsi:type="ns1:JobSimpleTrigger">
      <timezone xsi:type="xsd:string" xsi:nil="true"/>
      <startDate xsi:type="xsd:dateTime">2008-10-09T09:25:00.000Z</startDate>
      <endDate xsi:type="xsd:dateTime" xsi:nil="true"/>
      <occurrenceCount xsi:type="xsd:int">1</occurrenceCount>
      <recurrenceInterval xsi:type="xsd:int" xsi:nil="true"/>
      <recurrenceIntervalUnit xsi:type="ns1:IntervalUnit" xsi:nil="true"/>
    </simpleTrigger>
    <calendarTrigger xsi:type="ns1:JobCalendarTrigger" xsi:nil="true"/>
    <parameters soapenc:arrayType="ns1:JobParameter[4]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
    </parameters>
    <baseOutputFilename xsi:type="xsd:string">test</baseOutputFilename>
    <outputFormats soapenc:arrayType="xsd:string[1]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
      <outputFormats xsi:type="xsd:string">PDF</outputFormats>
    </outputFormats>
    <outputLocale xsi:type="xsd:string" xsi:nil="true"/>
    <repositoryDestination xsi:type="ns1:JobRepositoryDestination">
      <folderURI xsi:type="xsd:string">/reports_generated</folderURI>
      <sequentialFilenames xsi:type="xsd:boolean">false</sequentialFilenames>
      <overwriteFiles xsi:type="xsd:boolean">false</overwriteFiles>
    </repositoryDestination>
    <mailNotification xsi:type="ns1:JobMailNotification" xsi:nil="true"/>
  </job>
  </ns1:scheduleJob>''')
schedulingURL='1'http://user@pass:myjasperserver:8080/jasperserver/services/ReportScheduler'
schedulingWSDL=schedulingURL+“?wsdl”
服务器=SOAPProxy(schedulingURL、schedulingWSDL)
#第一个请求
打印服务器._ns(schedulingWSDL).scheduleJob(“”)
/报告/baz
巴兹
巴兹
2009-05-15T15:45:00.000Z
1.
巴兹
PDF
/生成的报告
真的
假的
my@email.com
测试
测试
发送附件
''')
#第二个请求(此处尝试不同的格式)
打印服务器._ns(schedulingWSDL).scheduleJob(“”)
/报告/baz
巴兹
巴兹
2008-10-09T09:25:00.000Z
1.
测试
PDF
/生成的报告
假的
假的
''')
每个请求都会导致错误:

SOAPpy.Types.faultType: <Fault soapenv:Server.userException: org.xml.sax.SAXException:
Bad types (class java.lang.String -> class com.jaspersoft.jasperserver.ws.scheduling.Job):
<SOAPpy.Types.structType detail at 14743952>: {'hostname': 'myhost'}>
SOAPpy.Types.faultType:class com.jaspersoft.jasperserver.ws.scheduling.Job):
:{'hostname':'myhost'}>

如有任何帮助/指导,将不胜感激。谢谢。

我对minidom有过很多不好的经历。我建议你使用。我对soap本身没有任何经验,所以我不能谈论这个问题的其余部分

在完全不了解Jasper的情况下,我可以向您保证,使用基于的简单客户端替换硬编码SOAP请求会更好。它将SOAP抽象出来,留给您一个非常干净的API访问

easy\u install suds
,应该足以让您继续使用