Imprimir toda a requisição HTTP de um servlet

5 respostas
P

Estou em um servlet, ja tentei de tudo e não sei o que usar no HttpServletRequest para imprimir todo o cabeçalho HTTP.

Quero imprimir no console toda a requisição para fazer 1 teste. Quero saber o que um programa me manda....

Tentei assim e não Deu....

public class HttpRequisicaoController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HttpRequisicaoController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		execute(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		execute(request, response);
	}
	
	private void execute(HttpServletRequest request, HttpServletResponse response){
		System.out.println(request.toString());
	}

}

a resposta foi : org.apache.catalina.connector.RequestFacade@14340bb

Já tentei outros métodos e nada....

5 Respostas

R

“Saber o que um programa me manda”.
Imagino que ele ti encaminhe informações via parameter ou attribute, cheque os seguintes métodos da classe HttpServletRequest.
request.getParameterMap() para identificar as chaves e valores de todos os parâmetros e o request.getAttributeNames() para obter o nome de todos os atributos existentes no request.

O toString do seu request não retorna o que você espera pois está com a implementação padrão, então ele retorna a sua referência na memória.

P

RoxRicardo:
“Saber o que um programa me manda”.
Imagino que ele ti encaminhe informações via parameter ou attribute, cheque os seguintes métodos da classe HttpServletRequest.
request.getParameterMap() para identificar as chaves e valores de todos os parâmetros e o request.getAttributeNames() para obter o nome de todos os atributos existentes no request.

O toString do seu request não retorna o que você espera pois está com a implementação padrão, então ele retorna a sua referência na memória.

Como eu disse no texto, quero imprimir todo o cabeçalho de requisição http não só os parametros, quero ver tudo, pois também recebo um xml e gostaria de analisar. Se não me engano, o getParameterMap() como o próprio nome diz, só me entrega os parametros, preciso de toda a informação enviada por http.

G

Para mostrar as informações dos headers use os métodos request.getHeaderNames() e request.getHeader(). Juntando com o mapa de parâmetros você terá tudo que veio na requisição.

Agora se o que quer é imprimir o request HTTP “cru”, como veio da rede, fica mais complicado… via código não tem acesso, veja se seu servidor possui essa funcionalidade, ou mesmo se o cliente tem condições de logar as requisições.

R

Como eu disse, o .toString() está com a implementação padrão, se você quer todas as informações, muito provavelmente terá que criar um método que dê os gets necessários e agrupe em uma string só.

P

Fiz assim então XD axo que consegui... Vou ver todo o cabeçalho e tentar fazer o programa enviar os dados para essa url e eu vou ver o que sai...

@RequestMapping("retorno")
	public String retorno(HttpServletResponse httpresp, HttpServletRequest httpreq, Model model) throws IOException{
		
		Enumeration headerNames = httpreq.getHeaderNames();
		List<String> lHeaderN = new ArrayList<String>(); 
		String headerNamesForHtml= new String();
		
		while (headerNames.hasMoreElements()) {
			String HeaderName = (String)headerNames.nextElement();
			lHeaderN.add(HeaderName+"="+httpreq.getHeader(HeaderName));
			headerNamesForHtml += (String)headerNames.nextElement() + "=" + httpreq.getHeader(HeaderName)+"<br/>";
		}
		model.addAttribute("cabecalho", headerNamesForHtml);
		System.out.println(lHeaderN.toString());
		
		return "retorno";
	}
Criado 12 de setembro de 2013
Ultima resposta 13 de set. de 2013
Respostas 5
Participantes 3