Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Upload report unit via webservice in C# .net to jasperserver

I'm trying to upload a new report unit to the jasperserver via the webservice from C# .net I've successfully uploaded/created the report unit but when I click on the report via the iReport repository navigator it says "No Attachment Present!" in a popup box. Below is the 'createXML' I'm sending to the webservice:

    <request operationName='put' locale='en'>
          <resourceDescriptor name='barunit' wsType='reportUnit'
             uriString='/reports/bar/bar_files'
             isNew='true'>
            <label>Bar Unit</label>
            <description>This is a test</description>
            <resourceProperty name='PROP_PARENT_FOLDER'>
                <value>/reports/bar</value>
            </resourceProperty>

            <resourceDescriptor name='bar.jrxml' wsType='jrxml'
                 uriString='/reports/bar/bar_files'
                 isNew='true'>
                <label>Bar Report</label>
                <description>This is a test</description>

                <resourceProperty name='PROP_RU_IS_MAIN_REPORT'>
                    <value>true</value>
                </resourceProperty>
           </resourceDescriptor>
       </resourceDescriptor>
    </request>

And here is the code that sends 'createXML' to the webservice:

JasperService.ManagementServiceService service = new JasperService.ManagementServiceService();
        service.Credentials = new System.Net.NetworkCredential("jasperadmin", "jasperadmin");
        service.PreAuthenticate = true; 

FileStream fs = new FileStream(@"C:\bar.jrxml", FileMode.Open, FileAccess.Read);


        Microsoft.Web.Services2.Attachments.Attachment jrxmlAttachment = new Microsoft.Web.Services2.Attachments.Attachment("text/xml",fs);

        service.RequestSoapContext.Attachments.Add(jrxmlAttachment);
        string out = service.put(createXML);

The response from the webservice call gives the success code '0' so I'm sort of stumped. I'm guessing the trouble is in the file attachment to the RequestSoapContext because everything traces out well before that.

Any help would be greatly appreciated!

like image 897
foldinglettuce Avatar asked Dec 04 '10 01:12

foldinglettuce


1 Answers

I was missing a few tags: CREATE_REPORTUNIT_BOOLEAN, PROP_HAS_DATA, and PROP_PARENT_FOLDER.

Below is the final request xml that allowed me to upload the report unit via the webservice. The C# that calls the service didn't change from the original question.

<request operationName='put' locale='en'>
    <argument name='CREATE_REPORTUNIT_BOOLEAN'>true</argument>
    <resourceDescriptor name='barunit' wsType='reportUnit'
         uriString='/reports/bar/bar_files'
         isNew='true'>
      <label>Bar Unit</label>
      <description>This is a test</description>
      <resourceProperty name='PROP_PARENT_FOLDER'>
        <value>/reports/bar</value>
      </resourceProperty>

      <resourceDescriptor name='bar.jrxml' wsType='jrxml'
          uriString='/reports/bar/bar_files'
          isNew='true'>
        <label>Bar Report</label>
        <description>This is a test</description>

        <resourceProperty name='PROP_RU_IS_MAIN_REPORT'>
          <value>true</value>
        </resourceProperty>
        <resourceProperty name='PROP_HAS_DATA'>
          <value><![CDATA[true]]></value>
        </resourceProperty>
        <resourceProperty name='PROP_PARENT_FOLDER'>
          <value>/reports/testunit_files</value>
        </resourceProperty>
      </resourceDescriptor>
    </resourceDescriptor>
</request>

Hope that helps somebody out there!

like image 186
foldinglettuce Avatar answered Nov 11 '22 01:11

foldinglettuce