GET-запрос веб-службы Android отвечает только на часть ответа XML - PullRequest
2 голосов
/ 26 ноября 2011

Я пытаюсь подключиться к веб-сервису, предлагаемому моим отоплением дома. Размещение 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, чтобы обеспечить отсутствие прерывания потоком пользовательского интерфейса, но безуспешно.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 28 ноября 2011

Наконец-то нашел решение сам! Проблема была не в запросе, а в выводе в LogCat. Регистрация каждой отдельной строки дает желаемый полный ответ!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...