Я пытаюсь подключить и извлечь данные из XML-файла с сервера. Использование данных при получении XML-данных довольно велико для отдельных данных в XML-файле. Он превысил до 700 байт, где, если я открыт непосредственно из браузера на Android-телефоне, это всего лишь 18 байт.Использование данных при подключении к серверу
Почему так много разных по количеству байтов при получении данных через приложение? Ниже приведен мой асинтезный код при получении XML-данных с сервера. Спасибо
public class GetXMLTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
if (!isCancelled()) {
try {
String output = null;
//String[] newurl = { GlobalVariables.Global_URL + "/appstatus.xml" };
for (String url : urls) {
output = getOutputFromUrl(url);
}
return output;
} catch (Exception e) {
return null;
}
}
else
{
return null;
}
}
@Override
protected void onCancelled() {
}
private String getOutputFromUrl(String url) {
StringBuffer output = new StringBuffer("");
try {
InputStream stream = getHttpConnection(url);
BufferedReader buffer = new BufferedReader(new InputStreamReader(
stream));
String s = "";
while ((s = buffer.readLine()) != null)
output.append(s);
} catch (IOException e1) {
e1.printStackTrace();
}
return output.toString();
}
// Makes HttpURLConnection and returns InputStream
private InputStream getHttpConnection(String urlString) throws IOException {
InputStream stream = null;
URL url = new URL(urlString);
URLConnection connection = url.openConnection();
try {
HttpURLConnection httpConnection = (HttpURLConnection) connection;
httpConnection.setRequestMethod("GET");
httpConnection.connect();
if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
stream = httpConnection.getInputStream();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return stream;
}
@Override
protected void onPostExecute(String output) {
String XML = output;
// GlobalVariables.Global_data = output;
// String XML = prepareXML();
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/** Create handler to handle XML Tags (extends DefaultHandler) */
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
ByteArrayInputStream is = new ByteArrayInputStream(XML.getBytes());
xr.parse(new InputSource(is));
} catch (Exception e) {
}
}
}
Привет, я проверить использование данных с помощью 3G сторожевого приложения. Мое приложение будет запрашивать данные с сервера каждые 5 секунд в фоновом режиме. Любое предложение? спасибо – user3567682
Итак, вы смущены, как я уже сказал. Когда вы просматриваете приложение, вы видите размер запроса, отправленного вашим приложением + ответ, отправленный с сервера (в который входит 18-байтовый XML-файл). Таким образом, размер файла xml по-прежнему составляет 18 байт, но общая передача составляет 800 байт. Это совершенно нормально. Запрос может содержать 300-400 байтов данных заголовка, а также ответ. –
спасибо. теперь я понимаю. – user3567682