2010-02-11 7 views
3

quelqu'un a-t-il pu se connecter à un serveur de savon en utilisant ksoap2 android via https?Android ksoap2 via https

Je continue à obtenir l'erreur « Nom d'hôte < ###> n'a pas été vérifiée »

que je fais

AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL); 
androidHttpTransport.call(SOAP_ACTION, envelope); 

apparemment à la recherche de retour à d'autres ksoap qui n'est pas pour votre Android ment pour nous un appel différent pour se connecter via https, mais je ne peux pas trouver un moyen de le faire dans la version Android.

Quelqu'un a-t-il trouvé un moyen de connaître ou d'utiliser l'appel?

Merci pour votre aide

+0

Avez-vous trouvé votre solution? J'ai le même problème ici. Existe-t-il une alternative pour envoyer une requête SOAP via HTTPS? – RobGThai

+0

non je stil havnt trouvé la réponse en dehors de passer à repos/json –

Répondre

2

android ksoap2 est sur 2.5.2 qui supporte https

http://code.google.com/p/ksoap2-android/

le problème est je ne sais trop comment l'utiliser

HttpsTransportSE aht = new HttpsTransportSE(host, port, file, timeout) 

ce Shoud je saisis pour "fichier" paramètre? Quelqu'un a une idée?

BTW AndroidHttpTransport est obsolète dans la dernière version de ksoap2

+1

voir la documentation des paramètres ici https://gist.github.com/908048 ... Je vais ajouter à la javadoc plus tard –

2

Vous pouvez définir le nom du fichier sous forme de chaîne vide (""). En regardant le code source de ksoap, il passe le paramètre à java.net.URL et à partir de Sun Javadoc il fait référence au fichier - "le fichier sur l'hôte". J'ai arrêté d'essayer d'utiliser ksoap2 pour les appels https SOAP. Le problème est lié à la façon dont Android traite les connexions SSL. La seule solution semble être de créer un magasin de clés local pour stocker le certificat SSL et écrire un wrapper autour du client Http Apache pour utiliser le certificat. Donc, je pourrais aussi bien implémenter ces appels en utilisant REST. Je suppose que c'est ce que Google veut que nous fassions.

+0

Si vous voulez établir des connexions sécurisées à REST services avec un fichier de clés local, vous pouvez jeter un oeil à mon blog à http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/ Il fournit une étape détaillée description par étape. J'espère que ça aide – saxos

+0

Merci Ça m'a beaucoup aidé. Je l'ai vu en cherchant quelque chose de similaire. Avez-quelques commentaires que je vais ajouter à votre blog une fois que je nettoie mon code. –

+0

Merci. N'hésitez pas à commenter;) – saxos

6

Eh bien, vous aurez besoin de faire deux choses sur les appareils Android:

  1. Pour SSL, vous devez faire confiance au certificat du serveur. Vous pouvez soit installer un faux gestionnaire de confiance comme ici (http://groups.google.com/group/android-developers/browse_thread/thread/1ac2b851e07269ba/c7275f3b28ad8bbc?lnk=gst&q=certificate puis appeler allowAllSSL() avant de faire une communication SSL/appel à ksoap2) ou mettre plus d'efforts dans ce domaine, le rendre plus sûr et suivre les instructions de saxos, je suppose.
  2. Ensuite, vous devez utiliser ksoap2-android ou plus précisément la classe (KeepAlive) HttpsTransportSE comme ceci new KeepAliveHttpsTransportSE(host, port, file, timeout);. Les paramètres vont dans un objet URL, par exemple. d'accéder à une installation Jira c'est quelque chose comme new KeepAliveHttpsTransportSE("host.whatever", 443, "/rpc/soap/jirasoapservice-v2", 1000)

Btw .: J'ai écrit sur les « appareils Android », parce que je trouve utile de tester les choses d'abord dans un environnement J2SE et ici les choses HttpsTransportSE (KeepAlive) manque dans le lib (j'ai utilisé ksoap2-j2se-full-2.1.2.jar). Obtenez simplement les sources pour les trois classes HttpsTransportSE, KeepAliveHttpsTransportSE et HttpsServiceConnectionSE de ksoap2-android et mettez-les dans votre projet J2SE et utilisez-les. Cela fonctionne et c'est une amélioration de la productivité pour obtenir les premiers pas avec un service web inconnu (si vous connaissez le service web et comment modifier ksoap2, ça ne sert à rien, mais c'était pratique pour moi car j'étais nouveau sur ksoap2 et son android retombées).

+0

Merci. Cela a fonctionné comme un charme. –

+1

J'ai implémenté ceci ici https://gist.github.com/908048 –