2010-02-08 5 views
1

J'essaie d'appeler un service REST (qui nécessite une authentification) de mon application Android. Je le fais déjà avec succès avec une URL qui ne nécessite pas d'authentification, mais je ne suis pas sûr de la bonne approche à utiliser pour l'authentification. Je suis actuellement consommais xml en utilisant un SAX et d'appeler url.openStream() comme ceci:Comment consommer xml à partir de webservice en utilisant l'authentification?

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(); 
    } 
}); 

je lis que je devrais utiliser org.apache.http.impl.client.DefaultHttpClient afin de tirer profit de HTTP d'authentification de base à l'aide des cookies de session par défaut, mais je ne comprends pas comment cela devrait être fait en conjonction avec le Sax Parser.

L'objectif principal est ici que je veux appeler une URL qui nécessite un nom d'utilisateur authentifié, et avoir que XML de retour d'URL si le nom d'utilisateur est authentifié avec un mot de passe.

Répondre

0

Je crois que je l'ai fait ce que vous demandez dans ChandlerQE. Voir ChandlerQE.java pour la méthode run(). Le code n'est pas joli, mais fondamentalement j'utilise httpclient pour publier et obtenir, et analyser le XML retourné avec SAXParser.

+0

Merci pour votre exemple de code. Je suis en train de suivre votre exemple, mais je suis confus parce que vous attendez un HttpResonse, et mon webservice est configuré pour renvoyer un javax.ws.rs.core.Response - (avec ressort et CXF). Quel type de réponse dois-je retourner? – JohnRock

+0

Je suis confus. Qu'importe le côté client Android de ce que vous utilisez du côté serveur pour envoyer la réponse? La réponse est juste du texte sur le fil/l'air. –

+0

Oui, vous avez raison. Désolé, j'étais confus à ce sujet pendant une minute. J'ai pensé que je devais retourner un objet de réponse qui était du même type que le client s'attendait à recevoir, mais apparemment cela n'a pas d'importance. – JohnRock

Questions connexes