Загрузить отчетный блок через веб-сервис в C # .net на jasperserver - PullRequest
5 голосов
/ 04 декабря 2010

Я пытаюсь загрузить новый блок отчета на jasperserver через веб-сервис из C # .net Я успешно загрузил / создал блок отчета, но когда я нажимаю на отчет через навигатор репозитория iReport, он говорит: «Нет вложений» Настоящее время!" во всплывающем окне. Ниже 'createXML', который я отправляю на веб-сервис:

    <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>

А вот код, который отправляет 'createXML' на веб-сервис:

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);

Ответ от вызова веб-службы дает код успеха '0', так что я немного озадачен. Я предполагаю, что проблема в прикреплении файла к RequestSoapContext, потому что все прослеживается задолго до этого.

Любая помощь будет принята с благодарностью!

1 Ответ

5 голосов
/ 03 февраля 2011

Мне не хватало нескольких тегов: CREATE_REPORTUNIT_BOOLEAN, PROP_HAS_DATA и PROP_PARENT_FOLDER.

Ниже приведен окончательный XML-запрос, который позволил мне загрузить отчетную единицу через веб-сервис. C #, который вызывает службу, не изменился с исходного вопроса.

<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>

Надеюсь, это поможет кому-то там!

...