diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index 8ecb511a..888259ab 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -1396,7 +1396,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider InputStream is = null; try { - is = ParserUtils.scrapeInputStream(uri, null, true, 3); + is = ParserUtils.scrapeInputStream(uri, null, "HASESSIONID", 3); return queryConnections(uri, is); } catch (final XmlPullParserException x) @@ -1415,7 +1415,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider InputStream is = null; try { - is = ParserUtils.scrapeInputStream(uri, null, true, 3); + is = ParserUtils.scrapeInputStream(uri, null, "HASESSIONID", 3); return queryConnections(uri, is); } catch (final XmlPullParserException x) diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index 1779bbbb..d1524e82 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -204,7 +204,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider InputStream is = null; try { - is = ParserUtils.scrapeInputStream(apiUri, wrap(request), false, 3); + is = ParserUtils.scrapeInputStream(apiUri, wrap(request), null, 3); final List results = new ArrayList(); @@ -256,7 +256,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider protected final List jsonGetStops(final String uri) throws IOException { - final CharSequence page = ParserUtils.scrape(uri, false, null, jsonEncoding, false); + final CharSequence page = ParserUtils.scrape(uri, false, null, jsonEncoding, null); final Matcher mJson = P_AJAX_GET_STOPS_JSON.matcher(page); if (mJson.matches()) @@ -342,7 +342,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider try { - is = ParserUtils.scrapeInputStream(apiUri, wrap(request), false, 3); + is = ParserUtils.scrapeInputStream(apiUri, wrap(request), null, 3); final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); final XmlPullParser pp = factory.newPullParser(); @@ -614,7 +614,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider try { - is = ParserUtils.scrapeInputStream(apiUri, wrap(request), false, 3); + is = ParserUtils.scrapeInputStream(apiUri, wrap(request), null, 3); final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); final XmlPullParser pp = factory.newPullParser(); @@ -1080,7 +1080,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider protected final NearbyStationsResult jsonNearbyStations(final String uri) throws IOException { - final CharSequence page = ParserUtils.scrape(uri, false, null, jsonEncoding, false); + final CharSequence page = ParserUtils.scrape(uri, false, null, jsonEncoding, null); final List stations = new ArrayList(); diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index 62e8861f..f1182965 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -230,7 +230,7 @@ public class OebbProvider extends AbstractHafasProvider final String products, final WalkSpeed walkSpeed) throws IOException { // get base url and cookies from form - final CharSequence form = ParserUtils.scrape(QUERY_CONNECTIONS_FORM_URL, false, null, null, true); + final CharSequence form = ParserUtils.scrape(QUERY_CONNECTIONS_FORM_URL, false, null, null, "NSC_"); final Matcher m = P_QUERY_CONNECTIONS_FORM_ACTION.matcher(form); if (!m.find()) throw new IllegalStateException("cannot find form: '" + form + "' on " + QUERY_CONNECTIONS_FORM_URL); @@ -238,7 +238,7 @@ public class OebbProvider extends AbstractHafasProvider // query final String query = connectionsQuery(from, via, to, date, dep, products, walkSpeed); - final CharSequence page = ParserUtils.scrape(baseUri, true, query, null, true); + final CharSequence page = ParserUtils.scrape(baseUri, true, query, null, "NSC_"); final Matcher mError = P_QUERY_CONNECTIONS_ERROR.matcher(page); if (mError.find()) @@ -289,7 +289,7 @@ public class OebbProvider extends AbstractHafasProvider @Override public QueryConnectionsResult queryMoreConnections(final String uri) throws IOException { - final CharSequence page = ParserUtils.scrape(uri, false, null, null, true); + final CharSequence page = ParserUtils.scrape(uri, false, null, null, "NSC_"); final Matcher mError = P_QUERY_CONNECTIONS_ERROR.matcher(page); if (mError.find()) @@ -352,7 +352,7 @@ public class OebbProvider extends AbstractHafasProvider if (!mAllDetailsAction.find()) throw new IOException("cannot find all details link in '" + firstPage + "' on " + firstUri); final String allDetailsUri = mAllDetailsAction.group(1); - final CharSequence page = ParserUtils.scrape(allDetailsUri, false, null, null, true); + final CharSequence page = ParserUtils.scrape(allDetailsUri, false, null, null, "NSC_"); final Matcher mError = P_QUERY_CONNECTIONS_ERROR.matcher(page); if (mError.find()) diff --git a/src/de/schildbach/pte/util/ParserUtils.java b/src/de/schildbach/pte/util/ParserUtils.java index 9e0463d0..46a88229 100644 --- a/src/de/schildbach/pte/util/ParserUtils.java +++ b/src/de/schildbach/pte/util/ParserUtils.java @@ -60,17 +60,17 @@ public final class ParserUtils public static final CharSequence scrape(final String url) throws IOException { - return scrape(url, false, null, null, false); + return scrape(url, false, null, null, null); } public static final CharSequence scrape(final String url, final boolean isPost, final String request, String encoding, - final boolean cookieHandling) throws IOException + final String sessionCookieName) throws IOException { - return scrape(url, isPost, request, encoding, cookieHandling, 3); + return scrape(url, isPost, request, encoding, sessionCookieName, 3); } public static final CharSequence scrape(final String url, final boolean isPost, final String request, String encoding, - final boolean cookieHandling, int tries) throws IOException + final String sessionCookieName, int tries) throws IOException { if (encoding == null) encoding = SCRAPE_DEFAULT_ENCODING; @@ -91,7 +91,7 @@ public final class ParserUtils // workaround to disable Vodafone compression connection.addRequestProperty("Cache-Control", "no-cache"); - if (cookieHandling && stateCookie != null) + if (sessionCookieName != null && stateCookie != null) connection.addRequestProperty("Cookie", stateCookie); if (request != null) @@ -114,7 +114,7 @@ public final class ParserUtils if (buffer.length() > SCRAPE_PAGE_EMPTY_THRESHOLD) { - if (cookieHandling) + if (sessionCookieName != null) { for (final Map.Entry> entry : connection.getHeaderFields().entrySet()) { @@ -122,7 +122,7 @@ public final class ParserUtils { for (final String value : entry.getValue()) { - if (value.startsWith("NSC_") || value.startsWith("HASESSIONID")) + if (value.startsWith(sessionCookieName)) { stateCookie = value.split(";", 2)[0]; } @@ -167,10 +167,10 @@ public final class ParserUtils public static final InputStream scrapeInputStream(final String url) throws IOException { - return scrapeInputStream(url, null, false, 3); + return scrapeInputStream(url, null, null, 3); } - public static final InputStream scrapeInputStream(final String url, final String postRequest, final boolean cookieHandling, int tries) + public static final InputStream scrapeInputStream(final String url, final String postRequest, final String sessionCookieName, int tries) throws IOException { while (true) @@ -186,7 +186,7 @@ public final class ParserUtils // workaround to disable Vodafone compression connection.addRequestProperty("Cache-Control", "no-cache"); - if (cookieHandling && stateCookie != null) + if (sessionCookieName != null && stateCookie != null) connection.addRequestProperty("Cookie", stateCookie); if (postRequest != null) @@ -206,7 +206,7 @@ public final class ParserUtils final String contentEncoding = connection.getContentEncoding(); final InputStream is = connection.getInputStream(); - if (cookieHandling) + if (sessionCookieName != null) { for (final Map.Entry> entry : connection.getHeaderFields().entrySet()) { @@ -214,10 +214,9 @@ public final class ParserUtils { for (final String value : entry.getValue()) { - if (value.startsWith("NSC_") || value.startsWith("HASESSIONID")) + if (value.startsWith(sessionCookieName)) { stateCookie = value.split(";", 2)[0]; - System.out.println(stateCookie); } } }