PDA

Visualizza la versione completa : Java.net Http Via Proxy Aiutoo.....


robyp
05-02-2005, 14:13
ciao,

ho un problema, ho creato una classe che si collega ad un server web e scarica l'html della pagina ma non funziona se si passa da un proxy

Allora ho usato prima di aprire la conessione con:
URL _url = new URL(remote_url);
URLConnection connector = _url.openConnection();

questo metodo che setta le proprietà di sistema per il proxy:

private void setSystemProxyProp(String proxySRV, String porta) throws Exception{
System.out.println("Settato proxy..");
Properties prop = new Properties();
prop.put("proxySet","true");
prop.put("proxyHost",proxySRV);
prop.put("proxyPort",porta+"");
System.setProperties(prop);

}
E così funziona perfettamente..

Ora volevo invece provare a costruirmi un metodo che esegue la connessione al proxy richiedendo la pagina così:

private String connectViaProxy(String proxySRV, String porta, String url) throws Exception{
try{
try {
if (proxySRV == null|| porta == null)throw new UnknownHostException(proxySRV+":"+porta);

Socket sock = new Socket(proxySRV, Integer.parseInt(porta));

DataOutputStream dos = new DataOutputStream(sock.getOutputStream());

//stringa da inviare al proxy per la get dell'url
String postUrl = "GET " + this.source + "HTTP/1.0\n"+ "Host:" + this.host + "Connection:close\n\n";

dos.writeBytes(postUrl);
dos.flush();


System.out.println("Connected to " + url);

BufferedReader in = new java.io.BufferedReader(new InputStreamReader(sock.getInputStream()));

String line="";
StringBuffer response=new StringBuffer();
while ((line = in.readLine()) != null)
{
response.append(line);
}
System.out.println("Retrieving data...");
System.out.println(response);
sock.close();
return response.toString();

}catch(SocketException sE){System.out.println("Socket Error: Il proxy non ha risposto..Can't connect");sE.printStackTrace();}

}catch(UnknownHostException hE){System.out.println("Error Unknown host: Il proxy non ha risposto..Can't connect");hE.printStackTrace();}
return "";
}


Il prblema è che quando apro un socket verso il proxy mi da un SocketException..

più in dettaglio:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl .java:305)
at java.net.PlainSocketImpl.connectToAddress(PlainSoc ketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.j ava:158)
at java.net.Socket.connect(Socket.java:452)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:124)
at htmlreader.html_reader.connectViaProxy(html_reader .java:117)
Socket Error: Il proxy non ha risposto..Can't connect

Il proxy utilizza la porta 6588, ma non penso sia un problema..
Qualcuno saprebbe aiutarmi??

Grazie! :confused:

Roby

robyp
06-02-2005, 17:26
aiuto.. :master:

robyp
08-02-2005, 01:12
aiutoo :master:

Loading