Рубрики
Без рубрики

Как Получить Заголовок HTTP-Запроса На Java

– Как Получить Заголовок HTTP-Запроса На Java

В этом примере показано, как получить заголовки HTTP-запросов в Java. Чтобы получить заголовки HTTP-запросов, вам нужен этот класс Запрос HttpServletRequest :

1. Примеры HttpServletRequest

1.1 Повторите имя заголовка запроса и распечатайте его значение.

package com.mkyong.web.utils;

import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

public class WebUtils {

    private Map getHeadersInfo(HttpServletRequest request) {

        Map map = new HashMap();

        Enumeration headerNames = request.getHeaderNames();
        while (headerNames.hasMoreElements()) {
            String key = (String) headerNames.nextElement();
            String value = request.getHeader(key);
            map.put(key, value);
        }

        return map;
    }

}

Пример заголовков запросов:

"headers" : {
	"Host" : "mkyong.com",
	"Accept-Encoding" : "gzip,deflate",
	"X-Forwarded-For" : "66.249.x.x",
	"X-Forwarded-Proto" : "http",
	"User-Agent" : "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
	"X-Request-Start" : "1389158003923",
	"Accept" : "*/*",
	"Connection" : "close",
	"X-Forwarded-Port" : "80",
	"From" : "googlebot(at)googlebot.com"
}

1.2 Получите только заголовок “агент пользователя”.

package com.mkyong.web.utils;

import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

public class WebUtils {

    private String getUserAgent(HttpServletRequest request) {
        return request.getHeader("user-agent");
    }

}

Пример агента пользователя:

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

2. Пример Spring MVC

В Spring MVC вы можете @Автоматически подключенный HttpServletRequest напрямую в любой управляемый компонент Spring.

package com.mkyong.web.controller;

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/site")
public class SiteController {

	@Autowired
	private HttpServletRequest request;

	@RequestMapping(value = "/{input:.+}", method = RequestMethod.GET)
	public ModelAndView getDomain(@PathVariable("input") String input) {

		ModelAndView modelandView = new ModelAndView("result");

		modelandView.addObject("user-agent", getUserAgent());
		modelandView.addObject("headers", getHeadersInfo());

		return modelandView;

	}

	//get user agent
	private String getUserAgent() {
		return request.getHeader("user-agent");
	}

	//get request headers
	private Map getHeadersInfo() {

		Map map = new HashMap();

		Enumeration headerNames = request.getHeaderNames();
		while (headerNames.hasMoreElements()) {
			String key = (String) headerNames.nextElement();
			String value = request.getHeader(key);
			map.put(key, value);
		}

		return map;
	}

}

Объявите эту зависимость в pom.xml , если HttpServletRequest не удается найти.

	
		javax.servlet
		servlet-api
		2.5
	

Рекомендации

  1. Википедия – Список полей заголовка HTTP
  2. Как Получить Заголовок Http-Ответа На Java

Оригинал: “https://mkyong.com/java/how-to-get-http-request-header-in-java/”