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.
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
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. –
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