Назовите внешний веб-сервис от сервлета

Я разрабатываю сервлет, который получает название веб-сервиса и мог быть, передают запрос к внешнему веб-сервису, например: http://www.webservice.com/...

Я имею, создают обертку ответа, которые прерывают вывод ответа, но я не могу передать запрос к внешнему веб-сервису, это работает, только если я перенаправляю запрос к сервлету, который находится на том же сервере.

Пример:

request.getRequestDispatcher("aMyServlet").forward(request, response) // WORKS
 request.getRequestDispatcher("http://www.webservice.com/...").forward(request, response)

Не делает, потому что Tomcat ищет http://www.webservice.com/... на сервере как локальный ресурс.

Как я могу сделать внешний запрос?

Спасибо

6
задан Aaron Digulla 17 May 2010 в 20:20
поделиться

3 ответа

Чтобы сделать любой запрос к внешней службе, вам нужно явно создать новый HTTP-запрос и обработать его ответ. Взгляните на класс HttpUrlConnection .

2
ответ дан 17 December 2019 в 00:05
поделиться

Вы не упоминаете, какую службу вы хотите вызвать, но в любом случае ваш сервлет работает как клиент службы, поэтому вам следует обратить внимание на технологии клиентов службы.

Для вызова служб стиля REST можно использовать java.net.URL или Apache Commons HttpClient для отправки запроса на URL и получения ответа.

Для вызова служб SOAP можно использовать Apache Axis или Java WSIT .

1
ответ дан 17 December 2019 в 00:05
поделиться
Метод

forward , который вы используете, используется для связи между ресурсами сервера (например: сервлет на сервлет, как вы выяснили). Если вы хотите перенаправить в другое место, вы можете использовать sendRedirect HttpServletResponse метод. Лучше всего Выполните свой собственный HTTP-запрос и передайте результаты обратно в браузер. Это звучит сложнее, чем есть на самом деле. В основном вы создаете java.net.HttpURLConnection с URL-адресом веб-сайта, который вы хотите открыть "перенаправить" на. Фактически он может содержать параметры запроса (если они не слишком большие), так как они никогда не будут отправлены в браузер пользователя либо и не будет отображаться в адресной строке браузера. Откройте соединение, получите содержимое и запишите его в OutputStream сервлета.

4
ответ дан 17 December 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: