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!
Roby