2016-04-26 3 views
6

У меня есть приложение, которое содержит запрос POST. Чтобы запросить, мне нужно определить некоторые заголовки, границы и дефисы. Другими словами, мне нужно написать полный запрос. Который я успешно использовал HttpURLConnection. Теперь я хочу запросить приложение из приложения Spring.Как перенаправить запрос Spring в другое приложение?

Скажите, У меня три приложения A (датчик), B (пружина) и C (сервер).

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

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

+0

Просто интересно, префикс 'forward' будет хорошим вариантом здесь - http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-redirecting-forward-prefix проверка по другим источникам – aksappy

+0

Нашел аналогичный вопрос здесь - это поможет - http://stackoverflow.com/questions/17955777/redirect-to-an-external-url-from-controller-action-in-spring-mvc – aksappy

+0

yes это нечто вроде 'forward', но это не обсуждается в вопросе.' forward' перенаправляет один и тот же запрос на внутренний ресурс, но я хочу перенаправить его на внешний ресурс, как в вопросе, на ** C **, это другое приложение в другом месте (географически). – Root

ответ

1

Есть 3 mechanismes из перенаправления:

  • вперед: вы передаете запрос (и соответствующий ответ) на другой сервлет в том же контексте, то есть в том же вебе-приложении - AFAIK это не что вам нужно
  • redirect: вы предоставляете клиенту (браузеру) местоположение (URL), где он должен повторно отправить запрос. Вы можете перенаправить на любой URL-адрес, но он предполагает, что перенаправленное приложение будет напрямую принимать запрос клиента - как вы сказали, B действует как мост, я думаю, что это все еще не то, что вам нужно
  • прокси: мост отправляет новый запрос к следующему ходу и повторная отправка ответа его собственному клиенту. Поскольку между исходным запросом и новым нет связи, вы можете использовать другой протокол, например, трубы или сокет Unix, если вы находитесь на одном сервере. Или вы можете использовать Json, который прост в создании и декодировании в HTML-запросах и ответах. В мире Windows вы даже можете использовать DCOM или .NET для непосредственного выполнения методов на удаленном сервере. Но даже если он скрыт этими инструментами, вам все равно придется создавать новый запрос на мосту и декодировать его на сервере (за исключением DCOM/.NET на том же сервере)
+0

Я не хочу строить запрос снова, как вы сказали в случае 'proxy'. У меня есть идея переадресации и перенаправления, но я не знаю прокси. Я думаю, что я должен заглянуть в него, если это поможет не создавать запрос снова. – Root

+0

Я также попробовал весной переадресацию и вперед. Но перенаправление не меняет клиентский IP-адрес запроса, поэтому я считаю, что в этом случае он бесполезен. я не мог переслать другой URL-адрес. – Root