HttpClient ответ только одной строкой XML - PullRequest
1 голос
/ 09 февраля 2011

Я использую HttpClient для извлечения файла XML, и у меня возникают проблемы с возвратом всего документа (возвращается только одна строка файла XML). Итак:

DefaultHttpClient c = new DefaultHttpClient();
BasicResponseHandler r = new BasicResponseHandler();

String s = null;
try
{
    s = c.execute(new HttpGet("http://localhost/activity.xml"), r);
}
catch (Exception e)
{
    e.printStackTrace();
}

Log.i(TAG, s);

Результирующая строка всегда просто <?xml version="1.0" encoding="UTF-8"?>

Есть ли что-то, что мне нужно сделать, чтобы HttpClient загрузил весь файл или обработал символы новой строки или что-то еще? XML очень прост:

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <group-id type="integer">2187</group-id>
    <icon type="integer">2</icon>
    <name>Android</name>
    <overview>android app</overview>
    <permalink>codebase</permalink>
    <start-page>tickets</start-page>
    <status>active</status>
</project>

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Если вы передадите BasicResponseHandler в качестве обработчика ответа, результатом execute должно быть все тело ответа.

Если вы получаете только одну строку, моя теория такова, что это все, что отправляет сервер.

Посмотрите журналы сервера, чтобы увидеть, генерируется ли исключение во время генерации тела ответа. (Если вы используете JSP для рендеринга, например, исключение не может быть передано клиенту через код состояния HTTP. Вместо этого клиент увидит ответ 200 с усеченным телом.)

1 голос
/ 09 февраля 2011

Попробуйте это.

HttpResponse response = client.execute(request);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while((line = in.readLine()) != null){
                sb.append(line + NL);
            }
            in.close();

            String page = sb.toString();
            Log.d("Join", page);

И если вы хотите получить только данные XML, вам лучше расширить DefaultHandler.И используйте парсер, такой как SAXParser, XMLReader.

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