2010-02-08 2 views
1

Я пытаюсь вызвать службу 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, если имя пользователя аутентифицировано с паролем.

ответ

0

Я считаю, что я сделал то, о чем вы просите, в ChandlerQE. См. ChandlerQE.java для метода run(). Код не очень хорош, но в основном я использую httpclient для публикации и получения и анализирования возвращаемого XML с помощью SAXParser.

+0

Благодарим вас за пример кода. Я пытаюсь следовать вашему примеру, но я смущен, потому что вы ожидаете HttpResonse, и мой веб-сервис настроен для возврата javax.ws.rs.core.Response - (используя Spring и CXF). Какой тип ответа мне нужно вернуть? – JohnRock

+0

Я смущен. Какая разница на стороне клиента Android, что вы используете на стороне сервера для отправки ответа? Ответ - это просто текст по проводу/воздуху. –

+0

Да, вы правы. Извините, я смутился об этом минуту. Я думал, что должен вернуть объект ответа, который был того же типа, что и ожидаемый клиент, но, видимо, это не имеет значения. – JohnRock

Смежные вопросы