IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Création d'un client java pour un web service


Sujet :

Services Web Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Par défaut Création d'un client java pour un web service
    Bonjour tout le monde,
    Alors avant de parler directement de mon problème je vais vous parler un peu de ce que j'essaye de faire. Donc voilà j'ai essayé de créer un web service qui va dans une base de donnée oracle (j'utilise oracle 11g express edition) et qui fait une recherche sur base de deux éléments. Pour m'exercer j'ai fait un truc tout simple, j'ai une table de user et je fais une recherche sur eux soit avec leur id, soit leur nom, ou les deux (un seul résultat possible).
    Cette partie là j'ai réussi à la faire et je vous montre donc le résultat avec soapUI (voir pièce jointe soapUI)



    Donc à partir d'ici on voit que mon web service fonctionne comme je le souhaite. Une fois que ça a été fait j'ai généré mon client "automatiquement" avec les fonctionnalités d'eclipse à partir du web service crée. Il me définit lui même plusieurs classes et tout ce qui va avec. Ici j'ai la classe représentant mon Client.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    package org.example.wsdlbjo3;
     
    /**
     * Please modify this class to meet your needs
     * This class is not complete
     */
     
    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;
     
    import javax.servlet.ServletRequest;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.xml.namespace.QName;
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.xml.bind.annotation.XmlSeeAlso;
     
    /**
     * This class was generated by Apache CXF 2.7.3
     * 2013-03-08T14:14:00.788+01:00
     * Generated source version: 2.7.3
     * 
     */
    public final class WSDLBJO3_WSDLBJO3SOAP_Client {
     
        private static final QName SERVICE_NAME = new QName("http://www.example.org/WSDLBJO3/", "WSDLBJO3");
     
        private WSDLBJO3_WSDLBJO3SOAP_Client() {
        }
     
        public static void main(String args[]) throws java.lang.Exception {
     
        	HttpServletRequest request = null;
        	HttpServletResponse response = null;
     
     
        	URL wsdlURL = WSDLBJO3_Service.WSDL_LOCATION;
            if (args.length > 0 && args[0] != null && !"".equals(args[0])) { 
                File wsdlFile = new File(args[0]);
                try {
                    if (wsdlFile.exists()) {
                        wsdlURL = wsdlFile.toURI().toURL();
                    } else {
                        wsdlURL = new URL(args[0]);
                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
            }
     
            WSDLBJO3_Service ss = new WSDLBJO3_Service(wsdlURL, SERVICE_NAME);
            WSDLBJO3 port = ss.getWSDLBJO3SOAP();  
     
            {
            System.out.println("Invoking newOperation...");
            org.example.wsdlbjo3.GetUser _newOperation_parameters = new org.example.wsdlbjo3.GetUser();
     
     
            //org.example.wsdlbjo3.CreationRecherche recherche = new org.example.wsdlbjo3.CreationRecherche();
     
           //  recherche.doGet(request, response, port);
     
     
            _newOperation_parameters.setIdUser1Rech(4);
            _newOperation_parameters.setNomUserRech("");
     
            org.example.wsdlbjo3.GetUserResponse _newOperation__return = port.newOperation(_newOperation_parameters);
            System.out.println("Nom de l'utilisateur: "+_newOperation__return.getNomUser());
            System.out.println("Id de l'utilisateur: " +_newOperation__return.getIdUser1());
     
     
     
            // getServletContext().getRequestDispatcher( "/afficherClient.jsp" ).forward( request, response );
     
     
            System.out.println("newOperation.result=" + _newOperation__return);
     
     
            }
     
            System.exit(0);
        }
     
    }
    Donc ici à la base je n'ai rien modifié, ou presque en fait j'ai juste changé les éléments compris dans _newOperation_parameters.setNomUserRech("");

    Donc en gros ici d'après ce que je comprends dans ces éléments on met de nouveaux paramètres de recherche (étant définit de typeorg.example.wsdlbjo3.GetUser ), ici je vais faire ma recherche seulement à partir de l'id d'un user.

    ensuite sur cette ligne:
    org.example.wsdlbjo3.GetUserResponse _newOperation__return = port.newOperation(_newOperation_parameters);
    on voit que je passe mes éléments, et qu'il va faire ma recherche avec le web service crée.
    Donc ici je fais un test pour voir si je comprends bien la logique derrière tout ça et si il n'y a rien qui cloche et voilà ce que j'obtiens (voir pièce jointe console)


    Donc voilà bingo tout fonctionne comme je le voulais. Maintenant voilà j'en arrive à mon problème. Il faut que j'arrive à afficher mes résultats sous forme d'une application web.

    Alors ici j'ai ma page jsp ou je dois entrer les info à chercher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <%@ page pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Création d'une recherche</title>
            <link type="text/css" rel="stylesheet" href="inc/style.css" />
        </head>
        <body>
            <div>
                <form method="post" action="CreationRecherche">
                    <fieldset>
                        <legend>Informations recherchées</legend>
     
                        <label for="idUser">Id </label>
                        <input type="number" id="idUser" name="idUser" value="" size="20" maxlength="20" />
                        <br />
     
                       <label for="nomUser">Nom</label>
                        <input type="text" id="nomUser" name="nomUser" value="" size="20" maxlength="20" />
                        <br />
     
                    </fieldset>
                    <input type="submit" value="Valider"  />
                    <input type="reset" value="Remettre à zéro" /> <br />
                </form>
            </div>
        </body>
    </html>
    ici ce sera l'affichage de mon résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <%@ page pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Affichage d'un User</title>
            <link type="text/css" rel="stylesheet" href="inc/style.css" />
        </head>
        <body>
     
            <%-- Affichage des données --%>
            <p>Id : ${ User1.idUser1 }</p>
            <p>Nom : ${ User1.nom }</p>
     
     
        </body>
    </html>
    Ma servlet CreationRecherche.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    package org.example.wsdlbjo3;
     
     
    import java.io.IOException;
     
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    public class CreationRecherche extends HttpServlet {
     
     
     
    	org.example.wsdlbjo3.GetUser _newOperation_parameters = new org.example.wsdlbjo3.GetUser();
    	WSDLBJO3 port;
     
     
     
    	public void doPost( HttpServletRequest request, HttpServletResponse response, WSDLBJO3 port) throws ServletException, IOException {
     
     
    		String idUser = request.getParameter("idUser");
    		System.out.println("toto est en vacance");
    		String nomUser = request.getParameter("nomUser");
     
    		_newOperation_parameters.setIdUser1Rech(Integer.parseInt(idUser));
            _newOperation_parameters.setNomUserRech(nomUser);
     
            org.example.wsdlbjo3.GetUserResponse _newOperation__return = port.newOperation(_newOperation_parameters);
     
     
            User1 user1= new User1();
            user1.setIdUser1( _newOperation__return.getIdUser1() );
            user1.setNom( _newOperation__return.getNomUser() );
            user1.setPrenom( "null" );
            user1.setLogin( "null" );
            user1.setPwd( "null" );
            user1.setMail( "null" );
            user1.setTel( "null" );
            user1.setService( "null" );
            user1.setApplicationName( "null" );
     
            /* Ajout du bean et du message à l'objet requête */
     
            request.setAttribute( "user1", user1 );
     
            RequestDispatcher rd = request.getRequestDispatcher("/afficherRecherche.jsp");
            rd.forward(request, response);
     
            // getServletContext().getRequestDispatcher( "/afficherRecherche.jsp" ).forward( request, response );
     
    		}
     
    	public void doGet( HttpServletRequest request, HttpServletResponse response, WSDLBJO3 port) throws ServletException, IOException 
    	{
    		// getServletContext().getRequestDispatcher( "/afficherRecherche.jsp" ).forward( request, response );
    		response.sendRedirect(request.getServletContext().getContextPath()+ "/afficherRecherche.jsp" );
        }
     
     
    }
    ici, dans ma servlet, je récupère mes élément avec le request.getParam, et ensuite je les met dans mon _newOperation_parameters que je vais ensuite passer à mon web service :

    org.example.wsdlbjo3.GetUserResponse _newOperation__return = port.newOperation(_newOperation_parameters);

    Vu que ça a fonctionné avant j'essaye de reproduire + ou - la même logique ^^' ... sans grande conviction XD
    Seulement voilà pour tout mettre dans ma servlet j'ai du pas mal adapter mon client.java notamment avec le port.newOperation.
    car oui le port est défini dans mon client et donc je me suis dis que j'allais passer l'élément dans ma méthode et que ça devrait aller (ou pas x'D)

    et donc voilà ce que donne maintenant mon client .java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
     
    package org.example.wsdlbjo3;
     
    /**
     * Please modify this class to meet your needs
     * This class is not complete
     */
     
    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;
     
    import javax.servlet.ServletRequest;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.xml.namespace.QName;
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.xml.bind.annotation.XmlSeeAlso;
     
    /**
     * This class was generated by Apache CXF 2.7.3
     * 2013-03-08T14:14:00.788+01:00
     * Generated source version: 2.7.3
     * 
     */
    public final class WSDLBJO3_WSDLBJO3SOAP_Client {
     
        private static final QName SERVICE_NAME = new QName("http://www.example.org/WSDLBJO3/", "WSDLBJO3");
     
        private WSDLBJO3_WSDLBJO3SOAP_Client() {
        }
     
        public static void main(String args[]) throws java.lang.Exception {
     
        	HttpServletRequest request = null;
        	HttpServletResponse response = null;
     
     
        	URL wsdlURL = WSDLBJO3_Service.WSDL_LOCATION;
            if (args.length > 0 && args[0] != null && !"".equals(args[0])) { 
                File wsdlFile = new File(args[0]);
                try {
                    if (wsdlFile.exists()) {
                        wsdlURL = wsdlFile.toURI().toURL();
                    } else {
                        wsdlURL = new URL(args[0]);
                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
            }
     
            WSDLBJO3_Service ss = new WSDLBJO3_Service(wsdlURL, SERVICE_NAME);
            WSDLBJO3 port = ss.getWSDLBJO3SOAP();  
     
            {
            System.out.println("Invoking newOperation...");
            org.example.wsdlbjo3.GetUser _newOperation_parameters = new org.example.wsdlbjo3.GetUser();
     
     
            org.example.wsdlbjo3.CreationRecherche recherche = new org.example.wsdlbjo3.CreationRecherche();
     
            recherche.doGet(request, response, port);
     
     
           // _newOperation_parameters.setIdUser1Rech(4);
            //_newOperation_parameters.setNomUserRech("");
     
            //org.example.wsdlbjo3.GetUserResponse _newOperation__return = port.newOperation(_newOperation_parameters);
            //System.out.println("Nom de l'utilisateur: "+_newOperation__return.getNomUser());
            //System.out.println("Id de l'utilisateur: " +_newOperation__return.getIdUser1());
     
     
     
            // getServletContext().getRequestDispatcher( "/afficherClient.jsp" ).forward( request, response );
     
     
            //System.out.println("newOperation.result=" + _newOperation__return);
     
     
            }
     
            System.exit(0);
        }
     
    }



    après je crée mon User, et j'essaye de le passer dans ma page afficher recherche :

    request.setAttribute( "user1", user1 );

    RequestDispatcher rd = request.getRequestDispatcher("/afficherRecherche.jsp");
    rd.forward(request, response);

    et pour finir voici mon web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     <?xml version="1.0" encoding="UTF-8"?>
     
    <web-app>
        <servlet>
            <servlet-name>CreationRecherche</servlet-name>
            <servlet-class>org.example.wsdlbjo3.CreationRecherche</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>CreationRecherche</servlet-name>
            <url-pattern>/CreationRecherche</url-pattern>
        </servlet-mapping>
     
    </web-app>
    et donc voilà quand je lance creerRecherche, que je met mes éléments et que je valide ça donne ceci

    Etat HTTP 405 - La méthode HTTP POST n''est pas supportée par cette URL
    La méthode HTTP POST n''est pas supportée par cette URL

    La méthode HTTP spécifiée n''est pas autorisée pour la ressource demandée.



    Donc voilà un peu ou j'en suis. Si quelqu'un pourrait m'aider ce serait vraiment cool car là je m'arrache les cheveux de la tête =/
    Je pense que ma logique est plus ou - bonne mais c'est juste la mise en forme, structure qui doit merder, quand je vois ça jme dis que j'ai vraiment crée un monstre XD

    Enfin voilà si vous avez besoin d'informations supplémentaires n'hésitez pas ^^
    Images attachées Images attachées   

Discussions similaires

  1. Client Java pour un Web Service PHP
    Par jof8dev dans le forum Services Web
    Réponses: 7
    Dernier message: 03/08/2012, 12h21
  2. applicatifs java pour tests web services
    Par godzizou dans le forum Services Web
    Réponses: 3
    Dernier message: 01/02/2008, 10h31
  3. Réponses: 2
    Dernier message: 20/11/2007, 16h00
  4. Réponses: 1
    Dernier message: 12/02/2007, 15h22
  5. [Axis]installation du client Axis pour les Web Services
    Par LESOLEIL dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 31/08/2005, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo