AbstractEfaProvider: Parse error message from mobile results.

This commit is contained in:
Andreas Schildbach 2018-12-23 02:53:25 +01:00
parent 99de34026e
commit 607c3c2b91

View file

@ -3073,20 +3073,25 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
XmlPullUtil.enter(pp, "efa"); XmlPullUtil.enter(pp, "efa");
final String now = XmlPullUtil.valueTag(pp, "now"); if (XmlPullUtil.test(pp, "error")) {
final Calendar serverTime = new GregorianCalendar(timeZone); final String message = XmlPullUtil.valueTag(pp, "error");
ParserUtils.parseIsoDate(serverTime, now.substring(0, 10)); throw new RuntimeException(message);
ParserUtils.parseEuropeanTime(serverTime, now.substring(11)); } else {
final String now = XmlPullUtil.valueTag(pp, "now");
final Calendar serverTime = new GregorianCalendar(timeZone);
ParserUtils.parseIsoDate(serverTime, now.substring(0, 10));
ParserUtils.parseEuropeanTime(serverTime, now.substring(11));
final Map<String, String> params = processPas(pp); final Map<String, String> params = processPas(pp);
final String requestId = params.get("requestID"); final String requestId = params.get("requestID");
final String sessionId = params.get("sessionID"); final String sessionId = params.get("sessionID");
final String serverId = params.get("serverID"); final String serverId = params.get("serverID");
final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, null, serverId, final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, null, serverId,
serverTime.getTimeInMillis(), new String[] { sessionId, requestId }); serverTime.getTimeInMillis(), new String[] { sessionId, requestId });
return header; return header;
}
} }
private Map<String, String> processPas(final XmlPullParser pp) throws XmlPullParserException, IOException { private Map<String, String> processPas(final XmlPullParser pp) throws XmlPullParserException, IOException {