cancel
Showing results for 
Search instead for 
Did you mean: 

Adding image on page header

Former Member
0 Kudos

Hi,

How to add image on report page header using Rest API

Accepted Solutions (1)

Accepted Solutions (1)

daniel_paulsen
Active Contributor
0 Kudos

Hi Vaibhave,

See the following post for information on adding an attachment to a report and setting the image as the background of a cell:

Dan

Former Member
0 Kudos

Hi Dan,

I am using Rest plugin for report creation ,for request body,can I follow the same format mentioned in step1 of above post?,

I tried mentioning details inside request body based on same format but received below error

Adding request details along with body below which I mentioned

Request: http://abc:6405/biprws/raylight/v1/documents/19863/attachments

Accept: application/xml

Content-Type: application/xml

Request Body:

Multipart boundary: ------------------987654321

Part[0] key: attachmentInfos

Part[0] content-Type: application/xml

Part[1] key: attachmentContent

Part[1] filename: Tulips.jpeg

Part[1] content-Type: image/jpeg

Error:

  • <error>
  •    <error_code>RWS 00067</error_code>
  •    <message>Unsupported media type. (RWS 00067)</message>
  •    <stack_trace>javax.ws.rs.WebApplicationException&#13;
  •   at org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java:411)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:224)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:91)&#13;
  •   at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)&#13;
  •   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)&#13;
  •   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)&#13;
  •   at java.util.concurrent.FutureTask.run(FutureTask.java:138)&#13;
  •   at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)&#13;
  •   at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)&#13;
  •   at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)&#13;
  •   at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)&#13;
  •   at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)&#13;
  •   at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)&#13;
  •   at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)&#13;
  •   at com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:93)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)&#13;
  •   at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  •   at com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  •   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)&#13;
  •   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)&#13;
  •   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)&#13;
  •   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)&#13;
  •   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)&#13;
  •   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)&#13;
  •   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)&#13;
  •   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)&#13;
  •   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)&#13;
  •   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)&#13;
  •   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)&#13;
  •   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)&#13;
  •   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)&#13;
  •   at java.lang.Thread.run(Thread.java:743)&#13;
  • </stack_trace>
  • </error>
eric_festinger
Contributor
0 Kudos

hi Vaibhav,

... and sorry: I wrote a typo in the post Dan mentioned. I'll edit it ASAP.

As explained in the documentation available from http://help.sap.com, the Content-Type should be multipart/form-data.

Regards,

eric

Former Member
0 Kudos

Hi Eric,

I have changed Content-Type to multipart/form-data.as suggested above keeping rest of the things same but getting below error, do I need to apply any change in above mentioned request body ?

Error

  • <error>
  •    <error_code>RWS 00070</error_code>
  •    <message>Internal server error. (RWS 00070)</message>
  •    <stack_trace>javax.ws.rs.WebApplicationException: org.apache.cxf.interceptor.Fault: Couldn't determine the boundary from the message!&#13;
  •   at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1042)&#13;
  •   at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:610)&#13;
  •   at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:575)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:239)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:91)&#13;
  •   at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)&#13;
  •   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)&#13;
  •   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)&#13;
  •   at java.util.concurrent.FutureTask.run(FutureTask.java:138)&#13;
  •   at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)&#13;
  •   at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)&#13;
  •   at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)&#13;
  •   at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)&#13;
  •   at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)&#13;
  •   at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)&#13;
  •   at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)&#13;
  •   at com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:93)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)&#13;
  •   at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  •   at com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  •   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)&#13;
  •   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)&#13;
  •   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)&#13;
  •   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)&#13;
  •   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)&#13;
  •   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)&#13;
  •   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)&#13;
  •   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)&#13;
  •   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)&#13;
  •   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)&#13;
  •   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)&#13;
  •   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)&#13;
  •   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)&#13;
  •   at java.lang.Thread.run(Thread.java:743)&#13;
  •   Caused by: org.apache.cxf.interceptor.Fault: Couldn't determine the boundary from the message!&#13;
  •   at org.apache.cxf.interceptor.AttachmentInInterceptor.handleMessage(AttachmentInInterceptor.java:66)&#13;
  •   at org.apache.cxf.jaxrs.ext.MessageContextImpl.createAttachments(MessageContextImpl.java:233)&#13;
  •   at org.apache.cxf.jaxrs.ext.MessageContextImpl.get(MessageContextImpl.java:72)&#13;
  •   at org.apache.cxf.jaxrs.impl.tl.ThreadLocalMessageContext.get(ThreadLocalMessageContext.java:38)&#13;
  •   at org.apache.cxf.jaxrs.utils.multipart.AttachmentUtils.getMultipartBody(AttachmentUtils.java:90)&#13;
  •   at org.apache.cxf.jaxrs.utils.multipart.AttachmentUtils.getAttachments(AttachmentUtils.java:95)&#13;
  •   at org.apache.cxf.jaxrs.provider.MultipartProvider.readFrom(MultipartProvider.java:139)&#13;
  •   at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1030)&#13;
  •   ... 41 more&#13;
  •   Caused by: java.io.IOException: Couldn't determine the boundary from the message!&#13;
  •   at org.apache.cxf.attachment.AttachmentDeserializer.initializeRootMessage(AttachmentDeserializer.java:117)&#13;
  •   at org.apache.cxf.attachment.AttachmentDeserializer.initializeAttachments(AttachmentDeserializer.java:93)&#13;
  •   at org.apache.cxf.interceptor.AttachmentInInterceptor.handleMessage(AttachmentInInterceptor.java:64)&#13;
  •   ... 48 more&#13;
  • </stack_trace>
  • </error>
eric_festinger
Contributor
0 Kudos

Vaibhav,

If you mean:


Multipart boundary: ------------------987654321

Part[0] key: attachmentInfos

Part[0] content-Type: application/xml

Part[1] key: attachmentContent

Part[1] filename: Tulips.jpeg

Part[1] content-Type: image/jpeg

as request body, this is not correct. These were just console outputs from our internal test framework.

The documentation, available from http://help.sap.com, shows an example in section "Adding an Attachment" (it's for example section 8.1.20.2 for 4.1/SP7 documentation).

Regards,

eric

Former Member
0 Kudos

Hi Eric,

I have mentioned below request details but getting error, please suggest where I am lacking

Request: http://abc:6405/biprws/raylight/v1/documents/19863/attachments

Content-Type: multipart/form-data

Accept: application/xml

Body:

<attachment>

<name>Tulips</name>

<mimeType>image/jpeg</mimeType>

</attachment>

--------------------####boundary123456798

<attachment>

<name>Tulips</name>

<mimeType>image/jpeg</mimeType>

</attachment>

--------------------####boundary123456798

Content-Disposition: form-data; name=""attachmentContent""; filename=""Tulips.jpeg""

Content-Type: image/jpeg

--------------------####boundary123456798

Error:

  1. <error>
  2.    <error_code>100</error_code>
  3.    <message>Rule not respected (Argument 'nbAttachments' must be greater than 1)</message>
  4.    <stack_trace>com.sap.webi.raylight.RaylightException: Rule not respected (Argument 'nbAttachments' must be greater than 1)&#13;
  5.   at com.sap.webi.raylight.context.Messenger.createException(Messenger.java:57)&#13;
  6.   at com.sap.webi.raylight.Rules.check(Rules.java:97)&#13;
  7.   at com.sap.webi.raylight.AbstractRaylightServiceDocument.addAttachment(AbstractRaylightServiceDocument.java:643)&#13;
  8.   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&#13;
  9.   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&#13;
  10.   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&#13;
  11.   at java.lang.reflect.Method.invoke(Method.java:597)&#13;
  12.   at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)&#13;
  13.   at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)&#13;
  14.   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:164)&#13;
  15.   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)&#13;
  16.   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)&#13;
  17.   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:91)&#13;
  18.   at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)&#13;
  19.   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)&#13;
  20.   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)&#13;
  21.   at java.util.concurrent.FutureTask.run(FutureTask.java:138)&#13;
  22.   at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)&#13;
  23.   at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)&#13;
  24.   at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)&#13;
  25.   at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)&#13;
  26.   at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)&#13;
  27.   at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)&#13;
  28.   at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)&#13;
  29.   at com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:93)&#13;
  30.   at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)&#13;
  31.   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)&#13;
  32.   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)&#13;
  33.   at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)&#13;
  34.   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)&#13;
  35.   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)&#13;
  36.   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  37.   at com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)&#13;
  38.   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)&#13;
  39.   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  40.   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)&#13;
  41.   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)&#13;
  42.   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)&#13;
  43.   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)&#13;
  44.   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)&#13;
  45.   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)&#13;
  46.   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)&#13;
  47.   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)&#13;
  48.   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)&#13;
  49.   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)&#13;
  50.   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)&#13;
  51.   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)&#13;
  52.   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)&#13;
  53.   at java.lang.Thread.run(Thread.java:743)&#13;
  54. </stack_trace>
  55. </error>
daniel_paulsen
Active Contributor
0 Kudos

Hi Vaibhav,

see the following post as well for details on how to construct the multipart/form-data request.  There is also a C# sample that shows how it is pieced together.

This should help with Step 1 in the first link I mentioned.  You could follow this sample except that you want to POST to:

  ..raylight/v1/documents/<docId/attachments


Dan


Former Member
0 Kudos

Hi Daniel,

Above post describes the procedure to upload file in folder however as per first step of the initial post suggested by you ,file or image should be attached with report , do you still want me to try uploading file in folder ?, also please correct me if my understanding is wrong

I am also pasting the error once again , in my earlier post the error was not visible

Error:

  • <error>
  •    <error_code>100</error_code>
  •    <message>
  • Rule not respected (Argument 'nbAttachments' must be greater than 1)
  • </message>
  •    <stack_trace>com.sap.webi.raylight.RaylightException: Rule not respected (Argument 'nbAttachments' must be greater than 1)&#13;
  •   at com.sap.webi.raylight.context.Messenger.createException(Messenger.java:57)&#13;
  •   at com.sap.webi.raylight.Rules.check(Rules.java:97)&#13;
  •   at com.sap.webi.raylight.AbstractRaylightServiceDocument.addAttachment(AbstractRaylightServiceDocument.java:643)&#13;
  •   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&#13;
  •   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&#13;
  •   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&#13;
  •   at java.lang.reflect.Method.invoke(Method.java:597)&#13;
  •   at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)&#13;
  •   at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:164)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:91)&#13;
  •   at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)&#13;
  •   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)&#13;
  •   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)&#13;
  •   at java.util.concurrent.FutureTask.run(FutureTask.java:138)&#13;
  •   at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)&#13;
  •   at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)&#13;
  •   at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)&#13;
  •   at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)&#13;
  •   at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)&#13;
  •   at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)&#13;
  •   at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)&#13;
  •   at com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:93)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)&#13;
  •   at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  •   at com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  •   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)&#13;
  •   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)&#13;
  •   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)&#13;
  •   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)&#13;
  •   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)&#13;
  •   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)&#13;
  •   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)&#13;
  •   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)&#13;
  •   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)&#13;
  •   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)&#13;
  •   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)&#13;
  •   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)&#13;
  •   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)&#13;
  •   at java.lang.Thread.run(Thread.java:743)&#13;
  • </stack_trace>
  • </error>
daniel_paulsen
Active Contributor
0 Kudos

Hi Vaibhav,

the URL you should be using is the one to add an attachment to a report:

  ..raylight/v1/documents/<docId/attachments


The error you are getting suggests the body of the request is incorrect.  Ensure you have carriage returns in the right places and that the attachment you are sending is added byte for byte into the request.


As shown in the blog about uploading files to the CMS, you can use the Fiddler tool to check out the request body to ensure it is formatted correctly.


Dan

Former Member
0 Kudos

Hi Dan,

Unfortunately I have Mozilla plugin as the only option , due to security reason I cannot download chrome plugin and fiddler , can it be done using Mozilla plugin ?, do I need to manually attach image file with Mozilla plugin while sending request?

I have changed the body as per attached screenshot but still getting same error

daniel_paulsen
Active Contributor
0 Kudos

Hi Vaibhav,

From what I could find, the Mozilla RestClient does not support multipart/form-data requests.

I could not see any way to add a file in the request stream, which based on the error is the problem.

You will need a client that supports this.

Dan

Answers (0)