Java 尝试在JasperServer中上载报告单元时请求错误

Java 尝试在JasperServer中上载报告单元时请求错误,java,api,rest,jasperserver,bad-request,Java,Api,Rest,Jasperserver,Bad Request,在尝试使用/jrs rest-java-client上载报表单元时,我遇到了错误的请求 我一直在JasperServer社区中寻找解决方案,但找不到答案 Exception in thread "main" com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.BadRequestException: Bad Request at sun.reflect.NativeConstructorAccessorImpl.newInstance

在尝试使用
/jrs rest-java-client
上载报表单元时,我遇到了错误的请求

我一直在JasperServer社区中寻找解决方案,但找不到答案

Exception in thread "main" com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.BadRequestException: Bad Request
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler.handleStatusCodeError(DefaultErrorHandler.java:111)
at com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler.handleError(DefaultErrorHandler.java:68)
at com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest.executeRequest(JerseyRequest.java:189)
at com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest.post(JerseyRequest.java:140)
at com.jaspersoft.jasperserver.jaxrs.client.apiadapters.resources.SingleResourceAdapter.uploadMultipartResource(SingleResourceAdapter.java:204)
at com.jaspersoft.jasperserver.jaxrs.client.apiadapters.resources.support.processor.CommonOperationProcessorImpl.create(CommonOperationProcessorImpl.java:46)
at com.jaspersoft.jasperserver.jaxrs.client.apiadapters.resources.support.decorator.ReportUnitResourceOperationProcessorDecorator.createInFolder(ReportUnitResourceOperationProcessorDecorator.java:46)
at com.jaspersoft.jasperserver.jaxrs.client.TestJasperDeploy.uploadingReportunit(TestJasperDeploy.java:170)
我初始化JasperServer的代码是

          Properties props = new Properties() {  
             setProperty("url", "http://localhost:8080/jasperserver/");
             setProperty("contentMimeType", "JSON");
             setProperty("acceptMimeType", "JSON");
             setProperty("connectionTimeout", "");
             setProperty("readTimeout", "");
             setProperty("authenticationType", "SPRING");
             setProperty("restrictedHttpMethods", "false");
             setProperty("logHttpEntity", "true");
             setProperty("logHttp", "true");
             setProperty("handleErrors", "true");   
         }  
     };

     RestClientConfiguration configuration = RestClientConfiguration.loadConfiguration(props);
     client = new JasperserverRestClient(configuration);  
     session = client.authenticate("jasperadmin", "jasperadmin");
我上传报告的代码是:

//this report has no subreports
// and requires a datasource not included in this example
ClientReferenceableFile jrxml = new ClientReferenceableFile() {
     @ Override
    public String getUri() {
        //my local  jrxm report
        String fileString1 = "C:/reports/documentos/subreports/SR_D_01_nome_funcionario.jrxml";
        return fileString1;
    }
};

ClientReportUnit repunit = new ClientReportUnit();
repunit.setJrxml(jrxml);

//this is the report location on the server
repunit.setUri("/reports/documentos/subreports");
repunit.setLabel("label report unit");
repunit.setDescription("descricao report");
ClientFile clifile = new ClientFile();
clifile.setType(ClientFile.FileType.jrxml);
clifile.setUri("/reports/documentos/subreports");
ReportUnitResourceBuilder repUnut = session.resourcesService().resource(repunit).withJrxml(repunit.getUri(), clifile);
repUnut.createInFolder("/reports");

在这种情况下,您没有正确使用API。这是您应该拥有的:

ClientReportUnit reportUnit = new ClientReportUnit();
reportUnit.setLabel("label report unit");
reportUnit.setDescription("descricao report");

ClientFile clientFile = new ClientFile();
clientFile.setType(ClientFile.FileType.jrxml);
clientFile.setLabel("Main Report");

FileInputStream fis;
try {
    fis = new FileInputStream("/path/to/report_template.jrxml");

    ReportUnitResourceBuilder reportUnitResourceBuilder = session.resourcesService().resource(reportUnit).withJrxml(fis, clientFile);
    reportUnitResourceBuilder.createInFolder("/reports/documentos/subreports");
} catch (FileNotFoundException e) {
    // do something with the error
    throw new RuntimeException(e);
}

在您的上传代码中,哪一行是第170行?最后一行?第170行调用代码的第二部分:错误在最后一行:repUnut.createInFolder(“/reports”);请编辑您的答案并添加以下详细信息:您的reportUnit需要使用哪些资源以及它们位于何处(已在服务器上或要上载),如果报表经常使用任何子报表,则您的代码解决了我们的问题。它现在将文件部署为报告,但未上载输入控件(当我执行报告时,ir返回错误消息“Empty report”)。是否可以在客户报告单元中设置控件?怎么做?提前感谢这就是我们要做的:ClientInputControl cli1=new ClientInputControl();cli1.setUri(“/datatypes/ANO”);cli1.设置标签(“ANO”);List inputControls=new ArrayList();inputControls.add(cli1);reportUnit.setInputControls(inputControls);