Jakarta commons-httpclient getResponseBodyAsStream()?

2 respostas
J

Fala pessoal,

Terminei um trabalho aqui mas o professor ta implicando em uns warnings que aparecem no console quando estou pegando a resposta das requisicoes que eu faco pro servidor...

Apesar do programa rodar blz e pegar certinho as respostas, ele pediu pra usar o metodo getResponseBodyAsStream() ao inves do getResponseBodyAsString() pra não dar mais os warnings...

Alguem poderia me dar uma ajuda em como pegar essa resposta como stream e passar pra uma String? Eu tentei aqui de alguns jeitos mas sou mto manco com esses lance de stream....

Alguem teria algum site ou tutorial explicando melhor essa manipulacao de stream?

aqui esta o codigo que estou usando no momento e que esta gerando os warnings...

public String lerResposta(HttpMethod metodo)
	{
		String responseBody = new String();
		
		try
		{
			responseBody = URLDecoder.decode(metodo.getResponseBodyAsString());			
		}    	
		catch (IOException e)
		{
    			System.err.println("Erro lendo a resposta do servidor...");
			System.err.println("Saindo...");
			System.exit(0);
		}
		finally
		{
		    metodo.releaseConnection();
		}
		return responseBody;    	
	}

Agradeco qualquer ajuda!
[]'s

2 Respostas

A

Procurar por InputStream cara, que é como vc recebe uma stream, daí vc pode usar o BufferedInputStream por exemplo para pegar uma cadeia de bytes e ler um a um montando sua string final. Aqui no prorpio guj, na seção de tutoriais deve existir algum que fale sobre isso.

Alberto

J

entao, depois de uma bela pesquisada no google e ler alguns artigos acabei resolvendo, ai vai o codigo pra caso alguem esteja com um problema parecido :smiley:

public String lerResposta(HttpMethod metodo)
	{
		String responseBody = new String();	
		
		try
		{
		    BufferedReader in = new BufferedReader(new InputStreamReader(metodo.getResponseBodyAsStream()));
		    StringBuffer out = new StringBuffer();
		    String linha;
		
		    while ((linha = in.readLine()) != null)
		    {
			out.append(linha).append("\n");
		    }
		
		    responseBody = URLDecoder.decode(out.toString(),"ISO-8859-1");
		}
		catch (UnsupportedEncodingException e)
		{
			System.err.println("Encoder invalido ou não suportado aplicado na resposta do servidor (ISO-8859-1)");
			System.err.println("Saindo...");
			System.exit(0);
		}
		
		catch (IOException e)
		{
    			System.err.println("Erro leitura/gravacao na resposta do servidor...");
			System.err.println("Saindo...");
			System.exit(0);
		}
		finally
		{
		    metodo.releaseConnection();
		}
		return responseBody;    	
	}
Criado 23 de maio de 2007
Ultima resposta 23 de mai. de 2007
Respostas 2
Participantes 2