We are unable to add attachments to jira ticket while creating ticket using API. However, we are able to successfully create a ticket in Jira but fails to add attachments with it.
API we are using for attachments is as below:
POST https://<Id>.atlassian.net/rest/api/2/issue/<ticket-number>/attachments
Headers: Basic userName:ApiToken X-Atlassian-Token nocheck
We are getting four exceptions as posted below:
1. org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:187)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at com.hexaware.instantfeedback.tickettool.service.impl.JiraTicketSystem.addAttachmentToIssue(JiraTicketSystem.java:714)
at com.hexaware.instantfeedback.tickettool.service.impl.JiraTicketSystem.processAttachments(JiraTicketSystem.java:653)
at com.hexaware.instantfeedback.tickettool.service.impl.JiraTicketSystem.logDefect(JiraTicketSystem.java:567)
at com.hexaware.instantfeedback.tickettool.service.TicketToolService.logDefect(TicketToolService.java:142)
at com.hexaware.instantfeedback.tickettool.controller.TicketToolController.logDefect(TicketToolController.java:41)
at com.hexaware.instantfeedback.ai.controller.AIController.getAIResponse(AIController.java:320)
at com.hexaware.instantfeedback.ai.controller.AIController.processAIResponse(AIController.java:482)
at com.hexaware.instantfeedback.service.DialogflowControllerService.processAIResponse(DialogflowControllerService.java:91)
at com.hexaware.instantfeedback.controller.DPMController.processUserInput(DPMController.java:356)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:901)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2. Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:108)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
... 50 more
3. Caused by: java.io.IOException: Stream Closed
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:233)
at org.apache.http.entity.mime.content.InputStreamBody.writeTo(InputStreamBody.java:92)
at org.apache.http.entity.mime.AbstractMultipartForm.doWriteTo(AbstractMultipartForm.java:134)
at org.apache.http.entity.mime.AbstractMultipartForm.writeTo(AbstractMultipartForm.java:157)
at org.apache.http.entity.mime.MultipartFormEntity.writeTo(MultipartFormEntity.java:113)
at org.apache.http.impl.execchain.RequestEntityProxy.writeTo(RequestEntityProxy.java:121)
at org.apache.http.impl.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:156)
at org.apache.http.impl.conn.CPoolProxy.sendRequestEntity(CPoolProxy.java:160)
at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:238)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
... 52 more
4. (RetryExec.java:97) - I/O exception (java.io.IOException) caught when processing request to {s}->https://hexinnovlab.atlassian.net:443: Stream Closed
Note: We suspect that we stared facing this issue after we migrated to userName:ApiToken for Authentication.
We request you to kindly look into it and help us with your inputs to find a solution.
Thanks and Regards
Safwaan
Dear @Thomas Deiler
As you mentioned, we do have a Binarybody with name "file" in the mime part.
And also we were perfectly able to add attachments to jira tickets, it's only from the past two weeks that we are unable to do so.
Safwaan
Dear @Mohammed Safwaan ,
if you are 100% sure that you didn't change your environment, then Altassian hat modified cloud API. You can raise a support request to clarify.
So long
Thomas
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Dear @Mohammed Safwaan ,
just to be sure, as username you use the email address, right. But anyhow, the create issue works. Or is this action allowed to anonymous?
How to debug: Try to dump the request you create by java code to some REST client and see if it also does not work.
So long
Thomas
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes @Thomas Deiler username is nothing but my email address linked to Jira. We put email address and Api Token as email:ApiToken String and encode it using Base 64 encoding.
We tried to test the attachment API of Version 2 in Postman and it resulted with "Could not get any Response".
when you mentioned about dumping the request to some REST client did you mean using tools like postman ? if not so can you please elaborate?
Below is the response generated by postman.
Thanks
Safwaan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Dear @Mohammed Safwaan ,
postman is pretty fine. So this create attachments does not work, only. Other requests work?
I remember that creating attachments for Jira Server via REST was also tricky. The mime part requires a BinaryBody with name "file".
So long
Thomas
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.