Jorodan Posté(e) 7 avril 2010 Share Posté(e) 7 avril 2010 Salut les jeunes, Je suis en stage en ce moment et je dois faire une application Android qui tappe sur le serveur de la boite par ses webservices. Les contraintes sont les suivantes : - c'est du SOAP - il y a authentification obligatoire Pour l'instant, j'ai étudié l'idée de KSOAP2-android, mais j'ai l'impression que ca ne gère pas l'authentification. Sinon, l'idée sur laquelle je suis parti, c'est de passer par Axis2 d'apache. Quelqu'un a déjà gérer cette problématique et aurait des idées pour m'orienter dans mes recherches ? Merci, Ju' Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Morphée Posté(e) 30 septembre 2010 Share Posté(e) 30 septembre 2010 T'es Bruno JDR ! Et pour le coup moi aussi ^^ Vu que t'as fini ton stage, je serai pas contre quelques tuyaux webservices avec Android. Je sais pas si çà se gère comme en Java. Je vais continuer à chercher, mais si t'as des infos n'hésite pas ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorodan Posté(e) 30 septembre 2010 Auteur Share Posté(e) 30 septembre 2010 Alors oui j'ai des infos! Je te propose de te donner ici les premières briques que j'ai trouvé. Passe moi un coup de fil si t'en veux plus. Pendant mon stage, je me suis concentré sur le WS en SOAP. Java propose de gérer se protocole en natif grâce à une lib appache. En Java, tu peux générer les stub à partir des WSDL et utiliser ces stubs dans ton projet. Malheureusement, les stubs sont créés avec des classes réseaux Java qui n'ont pas été importées telles quel sous Android. Donc ca ne marche pas. Autre option, utiliser une lib qui te lis les requètes pour les parser intelligemment et t'aider à fabriquer tes réponses. une bonne lib qui fait ca c'est K-SOAP. Malheureusement, ici aussi des problèmes de requtèes réseau. Du coup un projet K-SOAP-ANDROID a pour objectif de porter K-SOAP. Mais pour l'instant c'est très sommaire. Ca a peut-être évolué depuis la dernière fois que j'ai regardé. Pour finir REST et autre, pas cherché. Au final, ben je faisais tout à la main. Si t'as du temps (un pléonasme pour un thésard :P), tu peux porter les lib appache de génération de stub pour qu'elles soient compatible Android. Je suis sur que si t'es bon, tu pousses à l'équipe Android (oui oui c'est toujours open sources :)) et ca en jette sur le CV ;) ps : T'es BRUNO! J'ai pas compris! ps2 : Et JDR c'est secret...chut :P Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Morphée Posté(e) 30 septembre 2010 Share Posté(e) 30 septembre 2010 Ok merci mon grand ! Alors plusieurs points : 1 - Ouais, je pensais bien que les libs Java de base ne fonctionneraient pas vu que Android est "semi-ouvert". C'est comme les drivers sqlite pour JDBC, impossible à utiliser :( 2 - Je viens de voir aussi des choses sur REST qui, à première vue, a l'air tout aussi bien que du SOAP (c'est pas tout à fait comparable mais bon). J'ai trouvé un exemple d'utilisation ici : http://breaking-catch22.com/?p=127 Pas encore testé, mais je le fais tout de suite 3 - Hé Ho ! Chuis pô encore thésard, je suis en CDI en attendant la réponse de l'ANRT 4 - "T'es Bruno !" => demande toi qui joue dans Caméra café ;) 5 - Jeune Dément Révolté c'est secret ? ;) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Morphée Posté(e) 1 octobre 2010 Share Posté(e) 1 octobre 2010 (modifié) Pour ceux que çà intéresse et qui passent ici, voici un code court mais efficace qui permet d'envoyer une requête SOAP et de recevoir la réponse. A vous ensuite de la décortiquer. Ce code n'est pas de moi, copyright quelqu'un d'autre. http://stackoverflow.com/questions/1934216/android-ws-services N'oubliez pas, pour ceux qui ne savent pas, de rajouter la permission d'accès à internet pour votre application : Modifié 1 octobre 2010 par Morphée Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorodan Posté(e) 4 octobre 2010 Auteur Share Posté(e) 4 octobre 2010 1 - Ouais, je pensais bien que les libs Java de base ne fonctionneraient pas vu que Android est "semi-ouvert". C'est comme les drivers sqlite pour JDBC, impossible à utiliser :( Rien à voir avec le degré d'ouverture d'Android qui est bien 100% Open Source (ce sont les Googles Apps qui ne le sont pas ;) ) Le problème de la non compatibilité vient de l'API réseau qui n'est plus standard du à sa réimplémentation pour prendre en compte les problèmes de l'Internet Mobile. 4 - "T'es Bruno !" => demande toi qui joue dans Caméra café wink5 - Jeune Dément Révolté c'est secret ? wink Lol et private lol ;) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Morphée Posté(e) 4 octobre 2010 Share Posté(e) 4 octobre 2010 Semi-ouvert, je me comprend et tu me comprends, c'est juste que t'adore me contredire ;-) Ce que je veux dire c'est que beaucoup des habitudes de programmation prises avec Java standard peuvent être abandonnées, soit pour des choses mieux gérées, soit pour d'autres réduites. Par exemple beaucoup d'API Java que j'avais l'habitude d'utiliser ne fonctionnent plus, et pas seulement pour le réseau. Après c'est sûr que çà leur a permit d'optimiser à fond la machine virtuelle, ce qui nous donne un Java plus puissant que Java. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Morphée Posté(e) 22 novembre 2011 Share Posté(e) 22 novembre 2011 (modifié) Je redonne vie à ce vieux post car de l'eau a coulé sous les ponts. Pour ceux qui passeraient pas là et chercheraient à savoir comment utiliser des services SOAP sur Android, j'ai fais un tuto sur le sujet disponible ici J'espère que çà pourra servir ! Modifié 23 novembre 2011 par Morphée Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TobyKaos Posté(e) 29 novembre 2011 Share Posté(e) 29 novembre 2011 C'est bien les web services en soap mais j'arrive pas à vérifier que c'est bien avec mon web services php que je communique. Je me suis créer une pair de clef public, privée. La privée en pem et la public en DER. sur mon web service je signe mes messages en encodant avec la clef privée un nonce. Je renvoie le tout à Android qui à la clef public en der. Je récupère bien le message soap. Ok tout va bien, j'init une publicKey et je vérifie la signature. Et là ca fonctionne pas. je penche pour un problème utf8, utf16 ... mais je suis un peu largué là. Voici le code Android java: try { String[] property = {"nonce", "code"}; String[] value = {"10000", "dddd-tttt"}; Object soap = soapHelper.soap ("enterPromoCode", property, value); // Récupérer les quatre premiers éléments Tuto tut = new Tuto(); //Integer.parseInt(soap.toString ()); soapHelper.parseSoapObject(soap.toString (), tut); if(tut.Msg != null) { Signature sig; try { sig = Signature.getInstance("SHA1withRSA"); PublicKey publicKey = null; try { byte[] decodedKey = EoleJNILib.getFile("pubkey.der"); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(decodedKey)); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } catch (InvalidKeySpecException e) { Log.e(TAG, "Invalid key specification."); throw new IllegalArgumentException(e); } sig.initVerify(publicKey); String str = String.valueOf(tut.Nonce); byte[] utf8Bytes = str.getBytes("UTF8"); sig.update(utf8Bytes); byte[] signUTF8Bytes = tut.Signature.getBytes("UTF8"); if (!sig.verify(signUTF8Bytes)) { Log.e(TAG, "Signature verification failed."); return; } // ok this.showToastMsg(tut.Msg, 1); } catch (NoSuchAlgorithmException e) { Log.e(TAG, "NoSuchAlgorithmException."); } catch (InvalidKeyException e) { Log.e(TAG, "Invalid key specification."); } catch (SignatureException e) { Log.e(TAG, "Signature exception."); } } } catch(Exception e) { String s = e.toString(); this.showToastMsg(s, 1); } Quelqu'un peu m'aider? merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.