Pessoal,
Tenho uma classe para download de arquivo ou paginas, e agora estou criando um socket para que eu possa usar um programa chamado pryvox de modo que a cada chamada que eu faça ele percorra um caminho diferente.
Ou seja quando eu executar minha classe ela tem que fazer a requisição passar pelo privox.
Classe download
public class download {
Leitura teclado = new Leitura(); // instanciando classe
public void getpagina(String endereco) throws IOException{
try {
FileWriter writer = new FileWriter(new File("temp1.htm")); // criar o arquivo - colocar, true para append
PrintWriter grava = new PrintWriter(writer,true); // cria objeto para inserir texto, true faz append por linha
URL url = new URL(endereco); // instancia a classe url
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));// cria um leitor de buffer e recebe o input strem e o urlstrem que e o resultado da consulta.
String linha= new String("");// cria string linhas
while ((linha = reader.readLine()) != null){ // enquando o buffer não estiver vazio
grava.println(linha); // adiciona ao arquivo
grava.flush();
}
grava.close(); // fechar gravar
writer.close(); //fechar writer
}
catch(UnknownHostException ioe){
System.out.println("Erro ao acessar a url desejada.");
}
catch(SocketException ioe){
System.out.println("Erro de protocolo TCP");
}
catch(UnknownServiceException ioe){
System.out.println("Erro ao ler a pagina");
}
catch(EOFException ioe){
System.out.println("Ouve uma interrupção ao gravar o arquivo");
}
catch(FileNotFoundException ioe){
System.out.println("A pagina requisitada ou caminho invalido");
}
catch(CharConversionException ioe){
System.out.println("Erro ao converter a url");
}
catch(UnsupportedEncodingException ioe){
System.out.println("The Character Encoding is not supported.");
}
}
}
Agora estou tentando setar a porta do privox,e para isso pelo que entendi preciso usar um socket.
Criei este metodo para setar, mais como eu faço agora para o meu metodo download usar esse socket ?
Metodo que criei para definir socket
public void definesocket(){
try{
Socket s = null; //Declaro o socket cliente
PrintStream ps = null;//Declaro a Stream de saida de dados
s = new Socket("ip",porta); //Cria o socket com o recurso desejado na porta especificada
ps = new PrintStream(s.getOutputStream()); //Cria a Stream de saida de dados
ps.println(this.getpagina());
s.close();
}
catch(IOException e){
System.out.println("Algum problema ocorreu ao criar ou enviar dados pelo socket.");
}
}
Mais uma coisa, fiz isso baseado na documentação do guj, pergunta o que eu sou cliente ou servidor ?
Pois quando faço download eu pego e passo a url e recebo a pagina.
O Programa proxy usa a biblioteca do internet explorer.