Do not handle cookies by hand but use buildin cookie manager

This commit is contained in:
Laurent Clouet
2018-12-01 15:29:42 +01:00
parent 377abd27b3
commit e70e3b636d

View File

@@ -33,6 +33,8 @@ import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.ConnectException; import java.net.ConnectException;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.NoRouteToHostException; import java.net.NoRouteToHostException;
@@ -42,7 +44,6 @@ import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException; import java.security.cert.CertificateException;
import java.security.cert.X509Certificate; import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -88,7 +89,6 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager
private String base_url; private String base_url;
private Configuration user_config; private Configuration user_config;
private Client client; private Client client;
private ArrayList<String> cookies;
private HashMap<String, String> pages; private HashMap<String, String> pages;
private Log log; private Log log;
private long lastRequestTime; private long lastRequestTime;
@@ -100,10 +100,12 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager
this.user_config = user_config_; this.user_config = user_config_;
this.client = client_; this.client = client_;
this.pages = new HashMap<String, String>(); this.pages = new HashMap<String, String>();
this.cookies = new ArrayList<String>();
this.log = Log.getInstance(this.user_config); this.log = Log.getInstance(this.user_config);
this.lastRequestTime = 0; this.lastRequestTime = 0;
this.keepmealive_duration = 15 * 60 * 1000; // default 15min this.keepmealive_duration = 15 * 60 * 1000; // default 15min
CookieManager cookies = new CookieManager();
CookieHandler.setDefault(cookies);
} }
public void run() { public void run() {
@@ -512,9 +514,6 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager
connection.setDoOutput(true); connection.setDoOutput(true);
connection.setInstanceFollowRedirects(true); connection.setInstanceFollowRedirects(true);
connection.setRequestMethod("GET"); connection.setRequestMethod("GET");
for (String cookie : this.cookies) {
connection.setRequestProperty("Cookie", cookie);
}
if (url_.startsWith("https://")) { if (url_.startsWith("https://")) {
try { try {
@@ -550,21 +549,6 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager
out.close(); out.close();
} }
String headerName = null;
for (int i = 1; (headerName = connection.getHeaderFieldKey(i)) != null; i++) {
if (headerName.equals("Set-Cookie")) {
String cookie = connection.getHeaderField(i);
boolean cookieIsPresent = false;
for (String value : this.cookies) {
if (value.equalsIgnoreCase(cookie))
cookieIsPresent = true;
}
if (!cookieIsPresent)
this.cookies.add(cookie);
}
}
// actually use the connection to, in case of timeout, generate an exception // actually use the connection to, in case of timeout, generate an exception
connection.getResponseCode(); connection.getResponseCode();
@@ -648,9 +632,6 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager
conn.setDoOutput(true); conn.setDoOutput(true);
conn.setInstanceFollowRedirects(true); conn.setInstanceFollowRedirects(true);
conn.setUseCaches(false); conn.setUseCaches(false);
for (String cookie : this.cookies) {
conn.setRequestProperty("Cookie", cookie);
}
conn.setRequestMethod("POST"); conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Connection", "Keep-Alive");