Сохранение ответа сервлета, когда это PDF-файл, сгенерированный сервером отчетов oracle

Мое приложение развернуто в Oracle OAS (среда ADF). Мое приложение представляет собой простую форму с кнопкой отправки. При нажатии я отправляю запрос на сервер отчетов Oracle (в rwservlet). Мой запрос выглядит примерно так:

http://<server>:<port>/reports/rwservlet?report=<report_name>&userid=<userid>/<password>@<connect_string>&desformat=pdf&destype=cache

Это создает отчет в формате PDF и возвращает его в браузер пользователя. Я хотел бы получить этот отчет в формате PDF и сохранить его на своем локальном сервере (так что у меня есть 2 сервера: сервер OAS и сервер отчетов, и я вызвал отчет на сервере отчетов и вернулся к клиенту. Я просто хотите перехватить процесс и сохранить отчет на сервере OAS).

Чтобы отправить запрос, я использовал сервлет на своем сервере OAS. Я хочу как-то получить PDF-файл из моего объекта ответа (это мой план). Я не знаю, возможно ли это.


person berto77    schedule 21.10.2011    source источник


Ответы (1)


Вы не можете перехватить/скопировать запрос клиента. Вы должны запросить его программно с помощью другого HTTP-запроса.

InputStream input = new URL("http://<server>:<port>/reports/rwservlet?report=<report_name>&userid=<userid>/<password>@<connect_string>&desformat=pdf&destype=cache").openStream();
// ...

Просто напишите его в произвольное OutputStream обычным способом Java IO. Например, FileOutputStream.

person BalusC    schedule 22.10.2011
comment
Привет, BalusC, я использовал эту идею, но реализовал ее немного по-другому... Я отправил почтовый запрос, а затем написал ответ в локальный файл. Работает отлично. Ресурс, который я запрашиваю, защищен паролем, поэтому пришлось обойти это. Тем не менее, спасибо, ваш ответ направил меня в правильном направлении. - person berto77; 26.10.2011
comment
Пожалуйста. Вы можете найти пример отправки POST-запросов с помощью URLConnection здесь: stackoverflow.com/questions/2793150/ - person BalusC; 26.10.2011
comment
вау... да, именно то, что я в итоге сделал. Но, кажется, здесь гораздо больше вещей. Спасибо за ссылку - person berto77; 28.10.2011