@Override protected Document doInBackground(RouteParams... params) { if (params.length == 0) return null; RouteParams par = params[0]; String cached = null, xmlstring = null; if (!par.force_download) cached = getCached(par.train_number); if (cached != null && checkTable(cached, par.departure, par.deptime) && checkTable(cached, par.arrival, par.arrtime)) xmlstring = cached; else { if (!CommonUtils.onlineCheckSilent()) return null; isCached = false; publishProgress(); String data = "start=yes&REQTrain_name=" + par.train_number + "&date=" + par.date + "&time=" + par.deptime + "&sTI=1&dirInput=" + par.arrival + "&L=vs_java3&input=" + par.departure + "&boardType=" + par.type; String url = "http://rozklad.sitkol.pl/bin/stboard.exe/pn"; try { DefaultHttpClient client = new DefaultHttpClient(); HttpPost request = new HttpPost(url); client.removeRequestInterceptorByClass( org.apache.http.protocol.RequestExpectContinue.class); client.removeRequestInterceptorByClass(org.apache.http.protocol.RequestUserAgent.class); request.addHeader("Content-Type", "text/plain"); request.setEntity(new StringEntity(data)); InputStream inputStream = client.execute(request).getEntity().getContent(); ByteArrayOutputStream content = new ByteArrayOutputStream(); int readBytes = 0; while ((readBytes = inputStream.read(sBuffer)) != -1) { content.write(sBuffer, 0, readBytes); } xmlstring = new String(content.toByteArray()); xmlstring = xmlstring.replace("< ", "<"); saveInCache(par.train_number, xmlstring); } catch (Exception e) { return null; } } try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder db = factory.newDocumentBuilder(); InputSource inStream = new InputSource(); inStream.setCharacterStream(new StringReader("<a>" + xmlstring + "</a>")); return db.parse(inStream); } catch (Exception e) { return null; } }