Pergunta

Como posso ler o fluxo HTTP com a página HTML na codificação da Page?

Aqui está um fragmento de código que eu uso para obter o fluxo HTTP. InputStreamReader tem o argumento opcional da codificação, mas não tenho idéias sobre a maneira de obtê -lo.

URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
BufferedReader d = new BufferedReader(new InputStreamReader(is));
Foi útil?

Solução

A recuperação de uma página da Web é um processo razoavelmente complicado. É por isso que bibliotecas como HttpClient existir. Meu conselho é que, a menos que você tenha um motivo realmente convincente, use httpclient.

Outras dicas

Quando a conexão é estabelecida através

UrlConnection Conn = url.openconnection ();

Você pode obter o nome do método de codificação através de url.getContentEncoding ().

BufferredReader D = new BufferredReader (new InputStreamReader (IS, url.getContentEncoding ()));

A resposta curta é UrlConnection.getContentEncoding (). A resposta certa é o que Cletus sugere, use uma biblioteca de terceiros apropriada, a menos que você tenha um motivo atraente para não fazê -lo.

Eu tive um problema muito semelhante para resolver recentemente. Como as outras respostas, também comecei a brincar com HttpClient et al. No entanto, essas bibliotecas exigem que você conheça antecipadamente a codificação do arquivo que deseja baixar. Caso contrário, a conversão do arquivo HTML recuperado renderá em caracteres ilegíveis.

Essa abordagem não funcionará, porque a codificação do arquivo HTML é especificada apenas no próprio arquivo HTML. Dependendo da versão HTML, a codificação é especificada de muitas maneiras diferentes, como o cabeçalho XML, dois elementos diferentes de meta tag de cabeça etc. Se você seguir essa abordagem, precisará:

  1. Faça o download do arquivo e veja o conteúdo para descobrir a codificação analisando o conteúdo HTML.
  2. Faça o download do arquivo pela segunda vez para especificar a codificação adequada.

Especialmente analisando o conteúdo HTML para strings de codificação adequadas são propensas a erros. Em vez disso, sugiro que você confie em uma biblioteca como JSUP, que fará o trabalho por você. Portanto, em vez de baixar o arquivo via httpclient, use o JSUP para recuperar o arquivo para você. Além disso, o JSOUP fornece uma boa API para acessar diretamente diferentes partes da página HTML (por exemplo, o título da página).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top