Simultaneously return a response and render a file for download to the browser using Spring Rest
I am receiving a post request from my vendor who expects an instant response (I am using Spring Rest). I use this request to validate some transactions and allow file download to the user on the browser. My question is how can i simultaneously render that file to the browser for download and return the expected response to my vendor. Here is my attempted solution (unsuccessful). Please help. With thanks.
@RequestMapping(method = RequestMethod.GET,RequestMethod.POST, value ="/listeningurl", consumes = "application/xml", produces = "application/xml")
public ResponseObject lodgementNotifications(@RequestBody RequesObject reqObject, HttpServletResponse response)
//do stuffs with reqObject;
//Generate a fileUrl using some parameters from the reqObject;
try
//copies all bytes from a file to an output stream
URL fileURL = new URL(fileUrl);
HttpURLConnection httpConn = (HttpURLConnection) fileURL.openConnection();
InputStream inputStream = httpConn.getInputStream();
// set content type
response.setContentType(fileMetaData.getContentType());
// add response header
response.addHeader("Content-Disposition", "attachment; filename=" fileName"));
response.setContentLengthLong(fileMetaData.getContentLength());
response.setStatus(200);
FileCopyUtils.copy(inputStream, response.getOutputStream());
//flushes output stream
response.getOutputStream().flush();
catch (IOException e)
System.out.println("Error :- " + e.getMessage());
// Initialize ResponseObject
return responseObject
java spring rest spring-mvc
add a comment |
I am receiving a post request from my vendor who expects an instant response (I am using Spring Rest). I use this request to validate some transactions and allow file download to the user on the browser. My question is how can i simultaneously render that file to the browser for download and return the expected response to my vendor. Here is my attempted solution (unsuccessful). Please help. With thanks.
@RequestMapping(method = RequestMethod.GET,RequestMethod.POST, value ="/listeningurl", consumes = "application/xml", produces = "application/xml")
public ResponseObject lodgementNotifications(@RequestBody RequesObject reqObject, HttpServletResponse response)
//do stuffs with reqObject;
//Generate a fileUrl using some parameters from the reqObject;
try
//copies all bytes from a file to an output stream
URL fileURL = new URL(fileUrl);
HttpURLConnection httpConn = (HttpURLConnection) fileURL.openConnection();
InputStream inputStream = httpConn.getInputStream();
// set content type
response.setContentType(fileMetaData.getContentType());
// add response header
response.addHeader("Content-Disposition", "attachment; filename=" fileName"));
response.setContentLengthLong(fileMetaData.getContentLength());
response.setStatus(200);
FileCopyUtils.copy(inputStream, response.getOutputStream());
//flushes output stream
response.getOutputStream().flush();
catch (IOException e)
System.out.println("Error :- " + e.getMessage());
// Initialize ResponseObject
return responseObject
java spring rest spring-mvc
"Here is my attempted solution (Not working)" what is that "(Not working)" means? And from wherefileUrlcomes from?
– Zico
Nov 12 '18 at 10:14
Not working means i did not achieve the desired output from the solution. The fileUrl is generated using some parameters from the reqObject. By the way my point is not in being able to download the file or return a rest response. That one i can do provided that they dont occur at the same time. The challenge i am having is using the same controller method in downloading the file and at the same time return a rest response. And if not possible which other options that i can take to achieve the same @Zico
– geobudex
Nov 12 '18 at 19:03
I understand that. But it is not possible to achieve that using same endpoint to download a file and consume a rest response. You need to done that by using two different endpoint.
– Zico
Nov 13 '18 at 5:29
add a comment |
I am receiving a post request from my vendor who expects an instant response (I am using Spring Rest). I use this request to validate some transactions and allow file download to the user on the browser. My question is how can i simultaneously render that file to the browser for download and return the expected response to my vendor. Here is my attempted solution (unsuccessful). Please help. With thanks.
@RequestMapping(method = RequestMethod.GET,RequestMethod.POST, value ="/listeningurl", consumes = "application/xml", produces = "application/xml")
public ResponseObject lodgementNotifications(@RequestBody RequesObject reqObject, HttpServletResponse response)
//do stuffs with reqObject;
//Generate a fileUrl using some parameters from the reqObject;
try
//copies all bytes from a file to an output stream
URL fileURL = new URL(fileUrl);
HttpURLConnection httpConn = (HttpURLConnection) fileURL.openConnection();
InputStream inputStream = httpConn.getInputStream();
// set content type
response.setContentType(fileMetaData.getContentType());
// add response header
response.addHeader("Content-Disposition", "attachment; filename=" fileName"));
response.setContentLengthLong(fileMetaData.getContentLength());
response.setStatus(200);
FileCopyUtils.copy(inputStream, response.getOutputStream());
//flushes output stream
response.getOutputStream().flush();
catch (IOException e)
System.out.println("Error :- " + e.getMessage());
// Initialize ResponseObject
return responseObject
java spring rest spring-mvc
I am receiving a post request from my vendor who expects an instant response (I am using Spring Rest). I use this request to validate some transactions and allow file download to the user on the browser. My question is how can i simultaneously render that file to the browser for download and return the expected response to my vendor. Here is my attempted solution (unsuccessful). Please help. With thanks.
@RequestMapping(method = RequestMethod.GET,RequestMethod.POST, value ="/listeningurl", consumes = "application/xml", produces = "application/xml")
public ResponseObject lodgementNotifications(@RequestBody RequesObject reqObject, HttpServletResponse response)
//do stuffs with reqObject;
//Generate a fileUrl using some parameters from the reqObject;
try
//copies all bytes from a file to an output stream
URL fileURL = new URL(fileUrl);
HttpURLConnection httpConn = (HttpURLConnection) fileURL.openConnection();
InputStream inputStream = httpConn.getInputStream();
// set content type
response.setContentType(fileMetaData.getContentType());
// add response header
response.addHeader("Content-Disposition", "attachment; filename=" fileName"));
response.setContentLengthLong(fileMetaData.getContentLength());
response.setStatus(200);
FileCopyUtils.copy(inputStream, response.getOutputStream());
//flushes output stream
response.getOutputStream().flush();
catch (IOException e)
System.out.println("Error :- " + e.getMessage());
// Initialize ResponseObject
return responseObject
java spring rest spring-mvc
java spring rest spring-mvc
edited Nov 13 '18 at 6:33
geobudex
asked Nov 11 '18 at 16:00
geobudexgeobudex
50212
50212
"Here is my attempted solution (Not working)" what is that "(Not working)" means? And from wherefileUrlcomes from?
– Zico
Nov 12 '18 at 10:14
Not working means i did not achieve the desired output from the solution. The fileUrl is generated using some parameters from the reqObject. By the way my point is not in being able to download the file or return a rest response. That one i can do provided that they dont occur at the same time. The challenge i am having is using the same controller method in downloading the file and at the same time return a rest response. And if not possible which other options that i can take to achieve the same @Zico
– geobudex
Nov 12 '18 at 19:03
I understand that. But it is not possible to achieve that using same endpoint to download a file and consume a rest response. You need to done that by using two different endpoint.
– Zico
Nov 13 '18 at 5:29
add a comment |
"Here is my attempted solution (Not working)" what is that "(Not working)" means? And from wherefileUrlcomes from?
– Zico
Nov 12 '18 at 10:14
Not working means i did not achieve the desired output from the solution. The fileUrl is generated using some parameters from the reqObject. By the way my point is not in being able to download the file or return a rest response. That one i can do provided that they dont occur at the same time. The challenge i am having is using the same controller method in downloading the file and at the same time return a rest response. And if not possible which other options that i can take to achieve the same @Zico
– geobudex
Nov 12 '18 at 19:03
I understand that. But it is not possible to achieve that using same endpoint to download a file and consume a rest response. You need to done that by using two different endpoint.
– Zico
Nov 13 '18 at 5:29
"Here is my attempted solution (Not working)" what is that "(Not working)" means? And from where
fileUrl comes from?– Zico
Nov 12 '18 at 10:14
"Here is my attempted solution (Not working)" what is that "(Not working)" means? And from where
fileUrl comes from?– Zico
Nov 12 '18 at 10:14
Not working means i did not achieve the desired output from the solution. The fileUrl is generated using some parameters from the reqObject. By the way my point is not in being able to download the file or return a rest response. That one i can do provided that they dont occur at the same time. The challenge i am having is using the same controller method in downloading the file and at the same time return a rest response. And if not possible which other options that i can take to achieve the same @Zico
– geobudex
Nov 12 '18 at 19:03
Not working means i did not achieve the desired output from the solution. The fileUrl is generated using some parameters from the reqObject. By the way my point is not in being able to download the file or return a rest response. That one i can do provided that they dont occur at the same time. The challenge i am having is using the same controller method in downloading the file and at the same time return a rest response. And if not possible which other options that i can take to achieve the same @Zico
– geobudex
Nov 12 '18 at 19:03
I understand that. But it is not possible to achieve that using same endpoint to download a file and consume a rest response. You need to done that by using two different endpoint.
– Zico
Nov 13 '18 at 5:29
I understand that. But it is not possible to achieve that using same endpoint to download a file and consume a rest response. You need to done that by using two different endpoint.
– Zico
Nov 13 '18 at 5:29
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53250524%2fsimultaneously-return-a-response-and-render-a-file-for-download-to-the-browser-u%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53250524%2fsimultaneously-return-a-response-and-render-a-file-for-download-to-the-browser-u%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
"Here is my attempted solution (Not working)" what is that "(Not working)" means? And from where
fileUrlcomes from?– Zico
Nov 12 '18 at 10:14
Not working means i did not achieve the desired output from the solution. The fileUrl is generated using some parameters from the reqObject. By the way my point is not in being able to download the file or return a rest response. That one i can do provided that they dont occur at the same time. The challenge i am having is using the same controller method in downloading the file and at the same time return a rest response. And if not possible which other options that i can take to achieve the same @Zico
– geobudex
Nov 12 '18 at 19:03
I understand that. But it is not possible to achieve that using same endpoint to download a file and consume a rest response. You need to done that by using two different endpoint.
– Zico
Nov 13 '18 at 5:29