基本上我是建立一个代理检查器来检查它是否可以连接到特定的网站。我的问题是,当代理无法正常工作时,需要花费大量时间来取消尝试并转移到下一个代理。
我已经尝试过" setConnectTimeout();"参数,但它似乎没有正常工作。
感谢任何帮助,谢谢。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
try {
executeLoop();
} catch (Exception ex) {
Logger.getLogger(ProxyCheckerGUI.class.getName()).log(Level.SEVERE, null, ex);
}
}//GEN-LAST:event_jButton1ActionPerformed
private void executeLoop() throws Exception{
String getProxies[] = jTextAreaProxy.getText().split("\n");
String proxyIP;
int proxyPORT;
System.out.println("QuantityOfLines:" + getProxies.length);
for (int i = 0; i < getProxies.length; i++) {
System.out.println("Line: " + i);
String proxy[] = getProxies[i].split(":");
if (proxy.length == 2 & proxy[0].trim().length() > 0 && proxy[1].trim().length() > 0) {
proxyIP = proxy[0];
proxyPORT = Integer.parseInt(proxy[1]);
try {
testProxy(proxyIP, proxyPORT);
} catch (Exception ex) {
Logger.getLogger(ProxyCheckerGUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
private void testProxy(String proxyIP, int proxyPORT) throws Exception {
String url = "https://www.google.pt";
URL obj = new URL(url);
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIP, proxyPORT));
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(proxy);
//con.setRequestMethod("GET");
//con.setRequestProperty("User-Agent", "Mozilla/5.0");
con.connect();
con.setConnectTimeout(3000);
int response = con.getResponseCode();
System.out.println("\nResponse:" + response);
if (response == 200) {
System.out.println("Working : " + proxyIP + ":" + proxyPORT);
jTextAreaWorking.append(proxyIP + ":" + proxyPORT + "\n");
} else {
System.out.println("Not Working : " + proxyIP + ":" + proxyPORT);
}
con.disconnect();
}
答案 0 :(得分:0)
你可能还有更好的运气设置readtimeout
con.setReadTimeout(3000)
有时服务器会很乐意接受连接,但它只是没有响应。
对于Exception,它取决于它是否是一个致命的例外,或者你可以继续它。在这里,看起来Exception不是致命的,只是一些无法恢复并尝试其他东西的东西。所以是的,优雅地处理您的异常。