none
interopérabilité wcf avec client java et php en ws.* RRS feed

  • Question

  • Bonjour,

    Je suis entrain de créer une web service en wcf qui dois etre consommer par des clients java et php.

    Quand j'utiliser le basicHttpBinding ça marche normalement.

    Mais avec le wsHttpBinding y a aucune réponse.

    Est ce qu'il existe une interopérabilité ou non?

    Abdelkader
    lundi 13 juillet 2009 08:48

Réponses

  • Bonjour Abdelkader,

    Je suis tombé il y a peu sur un billet de Thomas Lebrun relatant les mêmes symptômes que vous.

    Cela s'explique par le fait que le binding wsHttpBinding forge ses messages en utilisant la version 1.2 de SOAP or il semble que Java utilise toujours la version 1.1 par défaut.
    Je suis persuadé qu'il est possible de demander à la JVM d'utiliser la version 1.2, mais cela fait bien trop longtemps que je n'ai pas touché à Java pour pouvoir vous aider la dessus.

    Quoi qu'il en soit, comme l'explique Thomas, il vous reste au moins deux solutions :
    • Créer un service “proxy”, utilisant le binding de type basicHttpBinding , qui va lui meme appeler le service principal
    • Intercepter les Headers SOAP et y insérer des informations de logins/mots de passe, qui seront ensuite réutilisées coté service pour authentifier l’utilisateur
    Thomas à préféré cette deuxième stratégie qui a pour avantage d'être certainement plus rapide à développer... mais qui malheureusement induit d'écrire un peu de code "plomberie" sans intérêt fonctionnel.

    Pour ma part, j'aurais préconisé la création d'un proxy, qui a pour avantage de pouvoir être débrayé a tout moment, lorsque votre plateforme Java sera en mesure d'utiliser la version 1.2 du protocole soap.


    Fab'
    lundi 13 juillet 2009 11:54

Toutes les réponses

  • Bonjour Abdelkader,

    Je suis tombé il y a peu sur un billet de Thomas Lebrun relatant les mêmes symptômes que vous.

    Cela s'explique par le fait que le binding wsHttpBinding forge ses messages en utilisant la version 1.2 de SOAP or il semble que Java utilise toujours la version 1.1 par défaut.
    Je suis persuadé qu'il est possible de demander à la JVM d'utiliser la version 1.2, mais cela fait bien trop longtemps que je n'ai pas touché à Java pour pouvoir vous aider la dessus.

    Quoi qu'il en soit, comme l'explique Thomas, il vous reste au moins deux solutions :
    • Créer un service “proxy”, utilisant le binding de type basicHttpBinding , qui va lui meme appeler le service principal
    • Intercepter les Headers SOAP et y insérer des informations de logins/mots de passe, qui seront ensuite réutilisées coté service pour authentifier l’utilisateur
    Thomas à préféré cette deuxième stratégie qui a pour avantage d'être certainement plus rapide à développer... mais qui malheureusement induit d'écrire un peu de code "plomberie" sans intérêt fonctionnel.

    Pour ma part, j'aurais préconisé la création d'un proxy, qui a pour avantage de pouvoir être débrayé a tout moment, lorsque votre plateforme Java sera en mesure d'utiliser la version 1.2 du protocole soap.


    Fab'
    lundi 13 juillet 2009 11:54
  • Bonjour Fabrice,

    Je vous remercie pour votre réponse, et je suis tout a fait d'accord avec vous sur ce point.

    Je vais m'orienter vers la deuxième solution qui sera plus facile à mainternir.

    Abdelkader.
    dimanche 9 août 2009 11:12
  • Bon, heu.. moi aussi j'ai eu ce problème de creer un Service WCF et un client Java sous NetBeans 6.9 pour resoudre cela j'ai juste desactivé la securité du du binding WSHttpBinding  et ça marchesi tu veux utiliser la securité par defaut du Binding alors le client Java doit imperativement etre aussi authenfié par le service

    vendredi 31 mai 2013 17:54
  • LA solution interopérable qui n'oblige pas à écrire du code coté serveur consiste à ajouter un Binding pour chaque type de client.

    le wsHttpBinding étant à éviter car, au delà de la securité standard, ces autres options :

    - securité au niveau du message ou du transport

    - authentification Windows, username ou certificat

    ne sont compatible qu'avec des client .net.

    pour éviter de futurs écueils, je vous conseil de garder ce lien de coté :

    http://blogs.codes-sources.com/jeremyjeanson/archive/2011/08/05/wcf-existe-t-il-un-autre-binding-que-basichttpbinding.aspx

    j'ai beau l'avoir écrit en 2011, il est toujours d'actualité.  

      

    Jérémy Jeanson MVP, MCP, MCTS http://blogs.codes-sources.com/JeremyJeanson/ (French or English spoken)

    samedi 1 juin 2013 17:52
    Modérateur