diff --git a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java index 452498a6..d62b453c 100644 --- a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java @@ -86,6 +86,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider private final boolean canAcceptPoiID; private final boolean needsSpEncId; private Charset requestUrlEncoding = ISO_8859_1; + private String referer; private boolean suppressPositions = false; private boolean useRouteIndexAsConnectionId = true; private final XmlPullParserFactory parserFactory; @@ -157,6 +158,11 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider this.requestUrlEncoding = requestUrlEncoding; } + protected void setReferer(final String referer) + { + this.referer = referer; + } + protected void setSuppressPositions(final boolean suppressPositions) { this.suppressPositions = suppressPositions; @@ -1316,7 +1322,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider InputStream is = null; try { - is = ParserUtils.scrapeInputStream(uri.toString()); + is = ParserUtils.scrapeInputStream(uri.toString(), null, null, referer, null, 3); final XmlPullParser pp = parserFactory.newPullParser(); pp.setInput(is, null); @@ -1723,10 +1729,12 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { final String uri = xsltTripRequest2Uri(from, via, to, date, dep, numConnections, products, walkSpeed, accessibility, options); + System.out.println(uri); + InputStream is = null; try { - is = ParserUtils.scrapeInputStream(uri, null, null, "NSC_", 3); + is = ParserUtils.scrapeInputStream(uri, null, null, referer, "NSC_", 3); return queryConnections(uri, is); } catch (final XmlPullParserException x) @@ -1757,7 +1765,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider InputStream is = null; try { - is = new BufferedInputStream(ParserUtils.scrapeInputStream(uri.toString(), null, null, "NSC_", 3)); + is = new BufferedInputStream(ParserUtils.scrapeInputStream(uri.toString(), null, null, referer, "NSC_", 3)); is.mark(512); return queryConnections(uri.toString(), is); diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index eb7b2fc0..28448104 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -282,7 +282,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider try { - reader = new InputStreamReader(ParserUtils.scrapeInputStream(apiUri, wrap(request, null), null, null, 3), ISO_8859_1); + reader = new InputStreamReader(ParserUtils.scrapeInputStream(apiUri, wrap(request, null), null, null, null, 3), ISO_8859_1); final List results = new ArrayList(); @@ -495,7 +495,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider try { - reader = new InputStreamReader(ParserUtils.scrapeInputStream(apiUri, wrappedRequest, xmlMlcResEncoding, null, 3), xmlMlcResEncoding); + reader = new InputStreamReader(ParserUtils.scrapeInputStream(apiUri, wrappedRequest, xmlMlcResEncoding, null, null, 3), xmlMlcResEncoding); final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); final XmlPullParser pp = factory.newPullParser(); @@ -961,7 +961,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider try { - reader = new InputStreamReader(ParserUtils.scrapeInputStream(apiUri, wrap(request, null), null, null, 3), ISO_8859_1); + reader = new InputStreamReader(ParserUtils.scrapeInputStream(apiUri, wrap(request, null), null, null, null, 3), ISO_8859_1); final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); final XmlPullParser pp = factory.newPullParser(); diff --git a/enabler/src/de/schildbach/pte/VorProvider.java b/enabler/src/de/schildbach/pte/VorProvider.java index 92995272..2409f8eb 100644 --- a/enabler/src/de/schildbach/pte/VorProvider.java +++ b/enabler/src/de/schildbach/pte/VorProvider.java @@ -33,6 +33,8 @@ public class VorProvider extends AbstractEfaProvider public VorProvider() { super(API_BASE, null); + + setReferer("http://www.wienerlinien.at/eportal/"); } public NetworkId id() diff --git a/enabler/src/de/schildbach/pte/util/ParserUtils.java b/enabler/src/de/schildbach/pte/util/ParserUtils.java index 7b79bd4b..2b9082fa 100644 --- a/enabler/src/de/schildbach/pte/util/ParserUtils.java +++ b/enabler/src/de/schildbach/pte/util/ParserUtils.java @@ -225,10 +225,10 @@ public final class ParserUtils public static final InputStream scrapeInputStream(final String url) throws IOException { - return scrapeInputStream(url, null, null, null, 3); + return scrapeInputStream(url, null, null, null, null, 3); } - public static final InputStream scrapeInputStream(final String urlStr, final String postRequest, Charset requestEncoding, + public static final InputStream scrapeInputStream(final String urlStr, final String postRequest, Charset requestEncoding, final String referer, final String sessionCookieName, int tries) throws IOException { if (requestEncoding == null) @@ -248,6 +248,9 @@ public final class ParserUtils // workaround to disable Vodafone compression connection.addRequestProperty("Cache-Control", "no-cache"); + if (referer != null) + connection.addRequestProperty("Referer", referer); + if (sessionCookieName != null && stateCookie != null) connection.addRequestProperty("Cookie", stateCookie);