Estou tentando encontrar o equivalente do Java ao Groovy's:
String content = "http://www.google.com".toURL().getText();
Eu quero ler o conteúdo de um URL em string. Não quero poluir meu código com fluxos e loops em buffer para uma tarefa tão simples. Eu olhei no HttpClient do apache, mas também não vejo uma implementação de uma ou duas linhas.
Respostas:
Agora que já passou algum tempo desde que a resposta original foi aceita, há uma abordagem melhor:
Se você deseja uma implementação um pouco mais completa, que não seja uma única linha, faça o seguinte:
fonte
Scanner#close()
mais tarde.String result = scanner.hasNext() ? scanner.next() : "";
lidar com isso.Esta resposta refere-se a uma versão mais antiga do Java. Você pode querer dar uma olhada na resposta de ccleve.
Aqui está a maneira tradicional de fazer isso:
Como o @extraneon sugeriu, o ioutils permite que você faça isso de uma maneira muito eloquente que ainda está no espírito do Java:
fonte
getText
, passar a string da URL como parâmetro e ter uma linha única:String content = URLConnectionReader.getText("http://www.yahoo.com/");
Ou apenas use o Apache Commons
IOUtils.toString(URL url)
, ou a variante que também aceita um parâmetro de codificação.fonte
IOUtils.toString(URL)
está obsoleto.IOUtils.toString(URL url, String encoding)
é preferível.IOUtils.toString(url, (Charset) null)
para alcançar resultado semelhante.Agora que mais tempo se passou, eis uma maneira de fazê-lo no Java 8:
fonte
http://www.worldcat.org/webservices/catalog/search/opensearch
web, estou recebendo apenas as duas primeiras linhas de xml.Existe uma maneira ainda melhor a partir do Java 9:
Como o exemplo original do groovy, isso pressupõe que o conteúdo seja codificado em UTF-8. (Se você precisar de algo mais inteligente do que isso, crie uma URLConnection e use-a para descobrir a codificação.)
fonte
getClass().getResourceAsStream(...)
para abrir arquivos de texto dentro do jar.Exemplo adicional usando o Guava:
fonte
Se você tiver o fluxo de entrada (consulte a resposta de Joe), considere ioutils.toString (fluxo de entrada).
http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html#toString(java.io.InputStream )
fonte
O seguinte funciona com Java 7/8, URLs seguros e mostra como adicionar um cookie à sua solicitação também. Observe que essa é principalmente uma cópia direta dessa outra ótima resposta nesta página , mas adicionou o exemplo de cookie e esclarecimentos, pois ela também funciona com URLs seguros ;-)
Se você precisar se conectar a um servidor com um certificado inválido ou certificado autoassinado, isso gerará erros de segurança, a menos que você importe o certificado. Se você precisar dessa funcionalidade, considere a abordagem detalhada nesta resposta a esta pergunta relacionada no StackOverflow.
Exemplo
saídas
Código
fonte
Aqui está a resposta adorável de Jeanne, mas envolvida em uma função organizada para os muppets como eu:
fonte
URL para String em Java puro
Chamada de exemplo
Implementação
Você pode usar o método descrito nesta resposta, em Como ler URL em um InputStream e combiná-lo com esta resposta em Como ler InputStream em String .
O resultado será algo como
Prós
É java puro
Ele pode ser facilmente aprimorado adicionando cabeçalhos diferentes (em vez de passar um objeto nulo, como no exemplo acima), autenticação etc.
O manuseio de switches de protocolo é suportado
fonte