Я пытаюсь подключиться к веб-сервису, предлагаемому моим отоплением дома. Размещение URL-адреса запроса в Chrome приводит к полному XML-файлу.
Впоследствии я попытался сделать то же самое программно с помощью приложения для Android, которое, к сожалению, отвечает только на половину файла XML.
Я уже пробовал несколько попыток, в том числе простое соединение Http:
private void androidHttpConnect() {
HttpURLConnection urlConnection=null;
try {
URL url = new URL("http://10.0.0.140:8080/user/menu");
urlConnection = (HttpURLConnection) url.openConnection();
BufferedInputStream in = new BufferedInputStream(
urlConnection.getInputStream());
Log.i("myapp",convertStreamToString(in));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
}
private String convertStreamToString(InputStream is) {
return new Scanner(is).useDelimiter("\\A").next();
}
и Http-клиент Android ...
HttpClient httpclient = AndroidHttpClient.newInstance("Android");
HttpGet httpget = new HttpGet("http://10.0.0.140:8080/user/menu");
HttpResponse response;
try {
response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
long len = entity.getContentLength();
Log.d("myapp", "content length "+len);
if (len != -1) {
try {
Log.d("myapp", EntityUtils.toString(entity));
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
// Stream content out
}
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Интересно, что эти попытки урезают результат на разных позициях, даже если они отличаются только примерно на 5 символов. На этой позиции нет специального символа, а XML довольно короткий.
Кто-нибудь есть идеи? Я также попытался запустить его в ASyncTask, чтобы обеспечить отсутствие прерывания потоком пользовательского интерфейса, но безуспешно.
Спасибо за вашу помощь.