2016-04-26 16 views
6

Mam aplikację, która przyjmuje żądanie POST. Aby zażądać, muszę zdefiniować niektóre nagłówki, granice i łączniki. Innymi słowy, potrzebuję stworzyć pełną prośbę. Które z powodzeniem z powodzeniem używałem HttpURLConnection. Teraz chcę poprosić o wniosek z mojej aplikacji Spring.Jak przekierować żądanie wiosny do innej aplikacji?

Powiedz, Mam trzy aplikacje A (czujnik), B (wiosna) i C (serwer).

W tym przypadku B będzie działać jako most, który otrzymał wniosek od uwierzytelnić i wysłać go do C

Nie chcę znowu spreparować taki sam wniosek wiosną po prostu przekierować żądanie do serwera. Czy jest na to jakiś mechanizm na wiosnę?

+0

Zastanawiasz się, czy prefiks 'forward' będzie dobrym rozwiązaniem - http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-redirecting-forward-prefix sprawdzanie więcej źródeł – aksappy

+0

Znaleźliśmy podobne pytanie tutaj - czy ta pomoc - http://stackoverflow.com/questions/17955777/redirect-to-an-external-url-from-controller-action-in-spring-mvc – aksappy

+0

yes jest to coś takiego jak "forward", ale nie zostało to omówione w pytaniu. 'Prześlij' przekazuje to samo żądanie do wewnętrznego zasobu, ale chcę je przekazać do zewnętrznego zasób jak pytanie do ** C **, który jest inną aplikacją w innym miejscu (geograficznie). – Root

Odpowiedz

1

Istnieją 3 mechanismes z przekierowania:

  • naprzód: przekazać żądanie (i związanego Response) do innego serwletu w tym samym kontekście, czyli w tej samej aplikacji internetowej - AFAIK to nie czego potrzebujesz:
  • przekierowanie: dajesz klientowi (przeglądarce) lokalizację (adres URL), w którym powinien on ponownie wysłać żądanie. Możesz przekierować do dowolnego adresu URL, ale zakłada, że ​​przekierowana aplikacja bezpośrednio zaakceptuje żądanie klienta - jak powiedziałeś B działa jak most, myślę, że nadal nie jest to, czego potrzebujesz
  • proxy: most wysyła nowe żądanie do następnego skoku i ponownie wyśle ​​odpowiedź do swojego klienta. Ponieważ nie istnieje sprzężenie między pierwotnym żądaniem a nowym, można nawet użyć innego protokołu, na przykład potoku lub gniazda uniksowego, jeśli jesteś na tym samym serwerze. Lub możesz użyć Jsona, który jest prosty do tworzenia i dekodowania w żądaniach i odpowiedziach HTML. W świecie Windows można nawet użyć DCOM lub .NET do bezpośredniego uruchamiania metod na zdalnym serwerze. Ale nawet jeśli jest ukryty przez te narzędzia, nadal musisz zbudować nowe żądanie na moście i dekodować go na serwerze (z wyjątkiem modelu DCOM/.NET na tym samym serwerze).
+0

Nie chcę ponownie tworzyć żądania, tak jak powiedziałeś w przypadku 'proxy'. Mam pomysł na forward i przekierowanie, ale nie mam pojęcia o proxy. Myślę, że muszę się w to zagłębić, jeśli nie pomoże to w ponownym zbudowaniu prośby. – Root

+0

Próbowałem również przekierowania wiosennego i do przodu. Ale przekierowanie nie zmienia adresu IP klienta żądania, więc myślę, że w tym przypadku jest bezużyteczne. Nie mogłem również przekazać innego adresu URL. – Root

Powiązane problemy