Я пытаюсь вызвать службу REST (которая требует аутентификации) из моего приложения для Android. Я делаю это успешно уже с URL-адресом, который не требует аутентификации, но я не уверен в правильном подходе к использованию для аутентификации. Я в настоящее время потребляющих XML с помощью парсера SAX и вызова url.openStream()
так:Как использовать xml из webservice с использованием аутентификации?
QuestionHandler myQuestionHandler = new QuestionHandler();
XMLReader xr = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
xr.setContentHandler(myQuestionHandler);
xr.parse(new InputSource(new URL('MyUnAuthenticatedURL').openStream()));
handler.post(new Runnable() {
public void run() {
recentQuestions = myQuestionHandler.getResultList();
loadQuestions = false;
fillData();
}
});
Я читал, что я должен использовать org.apache.http.impl.client.DefaultHttpClient
для того, чтобы воспользоваться преимуществами базовой HTTP-аутентификации с использованием сеансов по умолчанию куки, но я не понимаю, как это должно быть сделано в сочетании с парсером Sax.
Основная цель здесь заключается в том, что я хочу вызвать URL-адрес, для которого требуется аутентифицированное имя пользователя, и вернуть этот URL-адрес XML, если имя пользователя аутентифицировано с паролем.
Благодарим вас за пример кода. Я пытаюсь следовать вашему примеру, но я смущен, потому что вы ожидаете HttpResonse, и мой веб-сервис настроен для возврата javax.ws.rs.core.Response - (используя Spring и CXF). Какой тип ответа мне нужно вернуть? – JohnRock
Я смущен. Какая разница на стороне клиента Android, что вы используете на стороне сервера для отправки ответа? Ответ - это просто текст по проводу/воздуху. –
Да, вы правы. Извините, я смутился об этом минуту. Я думал, что должен вернуть объект ответа, который был того же типа, что и ожидаемый клиент, но, видимо, это не имеет значения. – JohnRock