Как сказать Android, чтобы проанализировать XML-ответ страницы, на которую я перенаправлен? - PullRequest
0 голосов
/ 14 сентября 2011

Я пытаюсь разобрать ответ XML в приложении Android.Техника синтаксического анализа сама по себе не является проблемой, но процесс получения XML затрудняет общий доступ к нему.

Подробнее: я запрашиваю веб-сайт xhtml с apache httpclient (в Android),Веб-сайт расположен на сервере приложений Java EE (AS).Я даю два параметра GET вместе с запросом (имя пользователя, пароль).

Веб-сайт расположен в безопасной зоне AS, поэтому в первую очередь AS перенаправляет меня на страницу входа.Страница входа берет имя пользователя и пароль (из параметра GET) и автоматически регистрирует меня.Если учетные данные верны, я буду перенаправлен на запрошенную страницу XHTML.Это сайт, который я хочу проанализировать с помощью синтаксического анализатора SAX для Android.

Но когда я пытаюсь это сделать, единственное место, которое я могу проанализировать, - это страница входа, а не страница.Я перенаправлен на после успешного входа в систему.Может кто-нибудь сказать мне, как поручить http-клиент Android Apache принять ответ перенаправленной страницы (для последующего анализа) после автоматического входа в систему?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2011

Нашел мое решение с помощью этой записи в блоге: http://ginger -space.blogspot.com / 2007/04 / HttpClient-для-форм-based.html

Только что обновил код до текущего клиента Apache, и ИТ работало.

0 голосов
/ 14 сентября 2011

Зарегистрированный пользователь сохраняется в сеансе HTTP, который идентифицируется cookie-файлом с именем JSESSIONID. Необходимо убедиться, что вы передаете полученный cookie-файл обратно при каждом последующем запросе, в том числе и при переадресации. В противном случае сервер будет считать перенаправленный запрос неавторизованным и перенаправит вас обратно на страницу входа.

Управление полученными куки-файлами может быть выполнено с помощью CookieStore, который вам нужно установить в HttpContext, который вам, в свою очередь, нужно передавать на каждый HttpClient#execute() вызов.

HttpClient httpClient = new DefaultHttpClient();
CookieStore cookieStore = new BasicCookieStore();
HttpContext httpContext = new BasicHttpContext();
httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
// ...

HttpResponse response1 = httpClient.execute(yourMethod1, httpContext);
// ...

HttpResponse response2 = httpClient.execute(yourMethod2, httpContext);
// ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...