Arhn - архитектура программирования

Как получить полный URL-адрес запроса с именем хоста/ip-адресом остаточного вызова?

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

Аналогично InetAddress ip = ip.getHostName(); в яве.



Ответы:


1

С Джерси вы можете сделать следующее

String clientHost = req.getRemoteHost(); // req is HttpServletRequest
String clientAddr = req.getRemoteAddr();
09.03.2015
  • Спасибо, что сработало, также нашел приведенный ниже код, который работает: ‹code›@GET @Path(/test) public Response test(@Context HttpContext context) { String url = context.getRequest(). Строковый запрос = context.getRequest().getRequestUri().toASCIIString(); Строка reqString = URL + + + запрос; вернуть Response.status(Status.OK).entity(reqString).build(); } ‹/код› 10.03.2015
  • Это работает, но не является универсальным, результат будет отличаться при использовании на локальном компьютере, например, localhost:8080/test не вернется localhost вместо этого он вернет что-то вроде этого 0:0:0:0:0:0:0:1, что является IPv6-представлением локального петлевого адреса ::1 или ::1/128. 26.10.2020

  • 2

    Используя CDI и @Context, аналогично комментарию Ashir Khan выше, requestContext или части контекста запроса могут быть доступны во время выполнения. Многие типы могут быть связаны аннотацией @Context и внедрены контейнером, хотя было бы лучше:

    1. Максимально уменьшите видимость введенных данных, т.е. привяжите к методу, а не к классу и
    2. Сократите объем вводимой информации, насколько это возможно, т. е. свяжите UriInfo, если все, что вам нужно, это baseUri, а не полный контекст запроса.

    Звучит много, но это так же просто, как (модификация) кода Ашира:

    @GET
    @Path("/test") 
    // Look Ma, no hands!
    public Response test(@Context javax.ws.rs.core.UriInfo uriInfo) { 
      return Response.status(Status.OK).entity(uriInfo.getBaseUri()).build();
    }
    

    см. также этот ответ

    01.05.2018

    3

    Вы можете использовать класс UriInfo и связать его с помощью аннотации @Context, тогда при каждом запросе вы можете получить доступ к информации URI, такой как имя хоста, порт, путь запроса и т. д.

    Вот пример -

    @POST
    @Path("/test")
    public Response uriTest(@Context UriInfo uriInfo){ //helps you get all URI related information.
        System.out.println(uriInfo.getBaseUri().getHost());
        System.out.println(uriInfo.getBaseUri().getPort());
        return Response.ok(null).build();
    }
    

    Вы можете прочитать больше о URIInfo здесь

    26.10.2020
  • Это должен быть правильный ответ, поскольку он основан на стандарте jax-rs @Ashir Khan 18.01.2021

  • 4

    Когда вы говорите InetAddress ip = ip.getHostName(); вы получите имя хоста машины, на которой работает служба отдыха, чтобы получить имя машины, с которой исходит запрос, вам нужно будет использовать что-то похожее на request.getRemoteHost(); это значение может зависеть от сетевой среды машины, с которой был отправлен запрос.

    чтобы получить полный URL, пожалуйста, обратитесь к сообщению ниже. Какой лучший способ получить текущий URL в Spring MVC?

    09.03.2015
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..