Em um projeto necessitei disponibilizar um portlet de Twitter para que os funcionários pudessem consultar as novidades da empresa. O problema é que o Twitter é bloqueado em toda a empresa. A solução foi utilizar um proxy que liberava o acesso somente no servidor. Para não alterar o servidor e utilizar somente na aplicação temos algumas opções: passando parâmetros para a aplicação ou realizando de forma programática.
A solução mais simples é passar como propriedade de sistema para a aplicação com os seguinte parâmetros:
- http.proxyHost: Endereço do proxy
- http.proxyPort: Porta do proxy, se não especificada o valor padrão é 80
- http.nonProxyHosts: Endereços que não serão passados pelo proxy. Podem ser usados curingas
A documentação desses parâmetros, inclusive para ftp, pode ser encontrada em: http://download.oracle.com/javase/6/docs/technotes/guides/net/properties.html
Para passar os parâmetros na sua aplicação é só usar o -D. Como por exemplo: java -Dhttp.proxyHost=192.168.1.100 -Dhttp.proxyPort=3214 br.com.thiagovespa.sample.proxy.MinhaApp
Outra maneira é setar esses parâmetros via código:
System.setProperty("http.proxyHost", "192.168.1.100"); System.setProperty("http.proxyPort";, "3214");
Uma vez setado, vale para toda a aplicação. Como a alteração no código que eu precisava era específico para Twitter e queria controlar isso programaticamente, procurei um pouco e encontrei um recurso novo na API do Java 5: a classe Proxy. Ao buscar no Google você encontrará vários sites explicando como fazer o mesmo com o commons httpclient da Apache, mas a solução disponibilizada no Java 5 é suficiente e elegante.
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.168.1.100", 3214)); URL url = new URL("http://www.thiagovespa.com.br"); HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy); uc.connect(); // ...
Simples e funcional! 🙂
[...] This post was mentioned on Twitter by Luan Mateus, Thiago G. Vespa. Thiago G. Vespa said: Novo post: Acesso a URL através de Proxy http://j.mp/9RE13S [...]