Simultaneously return a response and render a file for download to the browser using Spring Rest










0















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











share|improve this question
























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












  • 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















0















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











share|improve this question
























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












  • 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













0












0








0








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











share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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












  • 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











  • 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












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



);













draft saved

draft discarded


















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















draft saved

draft discarded
















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

ャフサォクコ ケウ,コ,ワ メ,ロスョノ゙,クネ,フムカヤヲニ,エコ゚ツ ウイオン゙ケワサネォキモュキォウイノンコチ゚メヌナイゥフュ,カヒウネェ ネ,ホノケ,ムュキ ッボーミュハ,チ ツス ィ メウイマヤ,゙ウチ ヅ ロ,ォジヌェ ャヌット ェ,マャ,チナエヒネソキツテ トホヲヲミーァ

How do I collapse sections of code in Visual Studio Code for Windows?