Exemplo de como acessar a internet via Proxy pelo Java

Segue a classe de exemplo:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package esquemaproxy;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import sun.misc.BASE64Encoder;

/**
 *
 * @author Ricardo Spinoza
 */
public class Main {

    public static void main(String[] args) {

        String username = "fulano";
        String password = "senha_rede_fulano";
        String userpass = username + ":" + password;
        String proxyHost = "ipOuHotnameServidorProxy";
        String proxyPort = "portaServidorProxy";

        // String da url
        String urlString = "http://www.google.com.br";

        // Objeto URL
        URL url = null;
        try {
            url = new URL(urlString);
        } catch (MalformedURLException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        // Objeto HttpURLConnection
        HttpURLConnection connection = null;
        try {
            connection = (HttpURLConnection) url.openConnection();
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        //Config Proxy
        //true para passar pelo servidor proxy
        System.setProperty("proxySet", "true");

        //IP ou nome do servidor proxy
        System.setProperty("http.proxyHost", proxyHost);

        //Porta do proxy
        System.setProperty("http.proxyPort", proxyPort);

        String encodedLogin = new BASE64Encoder().encode(userpass.getBytes());

        connection.setRequestProperty("Proxy-Authorization", "Basic " + encodedLogin);
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setAllowUserInteraction(false);

        //Methodo Requisição
        connection.setRequestProperty("Request-Method", "GET");

        // Variavel do resultado
        connection.setDoInput(true);
        connection.setDoOutput(false);
        try {
            // Faz a conexão
            connection.connect();
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        // Abre a conexão
        BufferedReader br = null;
        try {
            br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }

        // Lê a conexão
        StringBuffer newData = new StringBuffer();
        String s = "";
        try {
            while (null != ((s = br.readLine()))) {
                newData.append(s);
            }
            br.close();
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
        String html = new String(newData);
        System.out.println(html);
    }
}

[]s

4 Comentários

Arquivado em Java

4 Respostas para “Exemplo de como acessar a internet via Proxy pelo Java

  1. Carlos Tavares

    Fiz uma classe com o método Main semelhante ao exemplo, dei um RUN na classe, porém na linha abaixo:
    br = new BufferedReader(new InputStreamReader(connection.getInputStream()));

    Deu o seguinte erro:
    java.io.IOException: Server returned HTTP response code: 407 for URL: http://www.google.com.br
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
    at meustestes.Main.testProxy(Main.java:147)
    at meustestes.Main.main(Main.java:38)

    Alguém poderia me ajudar?

    Um grande abraço,

  2. Julio

    Funcionou bacana aqui, Obrigado por compartilhar

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s