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 :

Code retour 302 sur un web service


Sujet :

Services Web Java

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut Code retour 302 sur un web service
    Bonjour.
    Un web service que je dois appeler dans mon application, mais sur lequel je n'ai pas la main, me renvoi le code erreur ci-dessous.
    Ce web service effectué un PUT.

    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
     
    2017-07-11T10:06:04.546+0200|Infos: com.sun.xml.ws.client.ClientTransportException: Le serveur a envoyé le code de statut HTTP 302 : Found
     
           at com.sun.xml.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:332)
     
           at com.sun.xml.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:274)
     
           at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:232)
     
           at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:145)
     
           at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:139)
     
           at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
     
           at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
     
           at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
     
           at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
     
           at com.sun.xml.ws.client.Stub.process(Stub.java:463)
     
           at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)
     
           at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
     
           at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)
     
           at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)
     
           at com.sun.proxy.$Proxy276.updateCarte(Unknown Source)
     
           at projet.dao.carte.CarteDao.majCarte(CarteDao.java:130)
     
           at projet.remote.CartesApi.setCarte(CartesApi.java:160)
     
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     
           at java.lang.reflect.Method.invoke(Method.java:498)
     
           at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
     
           at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151)
     
           at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171)
     
           at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:152)
     
           at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104)
     
           at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387)
     
           at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331)
     
           at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103)
     
           at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271)
     
           at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
     
           at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
     
           at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
     
           at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
     
           at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
     
           at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
     
           at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
     
           at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
     
           at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
     
           at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
     
           at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
     
           at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
     
           at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
     
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
     
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
     
           at io.swagger.api.ApiOriginFilter.doFilter(ApiOriginFilter.java:27)
     
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
     
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
     
           at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
     
           at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
     
           at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
     
           at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
     
           at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
     
           at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
     
           at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
     
           at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
     
           at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
     
           at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
     
           at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
     
           at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
     
           at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
     
           at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
     
           at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
     
           at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
     
           at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
     
           at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
     
           at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
     
           at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
     
           at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
     
           at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
     
           at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
     
           at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
     
           at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
     
           at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
     
           at java.lang.Thread.run(Thread.java:745)
    D'après ce que j'ai pu lire, c'est une erreur de redirection.
    Mais je n'ai pas trouver d'exemple me permettant de corriger cette erreur, sachant que je n'ai pas la main sur le Web Service en lui même.

    Je peux juste l'appeler via une URL REST.

    J'effectue les tests du PUT avec Fiddler.

    Merci beaucoup par avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Un 302 n'est pas une erreur, mais un système de redirection (la resource est déplacée temporairement, 302=MOVED_TEMPORARILY) . L'URL de redirection est dans le header Location. Et c'est au client de gérer ça. Je ne connais pas Fiddler, je teste mes appels REST avec Postman, qui gère très bien ce code de retour en rappelant l'URL passée dans Location. Ce que tu peux tenter c'est d'appeler à la main cette URL.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut
    Que se soit dans le Request Headers ou le Response Headers, je ne vois aucun attribut Location.

    Comment faire pour appeler cette URL à la main ?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par GDS_Strou Voir le message
    Que se soit dans le Request Headers ou le Response Headers, je ne vois aucun attribut Location.
    C'est dans la réponse normalement. Tu es sûre ?
    Quel est le type de contenu que tu obtiens ? Si c'est du html, est-ce que tu as une balise <meta http-equiv="Refresh" content="0; url=http://machinbidule/" /> (pas terrible pour du REST, mais sait-on jamais).
    Citation Envoyé par GDS_Strou Voir le message
    Comment faire pour appeler cette URL à la main ?
    Je ne sais pas ce que permet fiddler, mais il suffit de copier le contenu de l'attribut Location et de l'invoquer comme si c'était l'adresse de ton end point REST.
    Essaye d'invoquer ton service avec Postman pour voir.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    le package com.sun.xml.ws.* c'est fait pour faire du SOAP, pas du REST. Et effectivement le code de retour 302 n'est pas acceptable en SOAP. Si un service SOAP répond ça alors il n'y a rien à faire, il faut le jeter et en prendre un autre.

    Du coup je dirais que pour analyser ton problème, il faut :

    - que tu montres quel webservice c'est. Comme ça on pourra regarder si c'est REST ou SOAP et comment on s'en sert.

    - que tu montres le code avec lequel tu appelles le service. Parce que forcément si tu codes un client SOAP pour appeler un service REST, ça marche pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par thelvin Voir le message
    le package com.sun.xml.ws.* c'est fait pour faire du SOAP, pas du REST.
    Oups, j'avais pas fait attention à la stacktrace.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut
    Merci pour votre aide.

    Le service REST, je l'appelle via mon navigateur avec une URL :
    HTTP://localhost:8080/annuaire/v1/cartes/unNuméro

    Cette URL appelle ce service REST :

    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
     
        @PUT
        @Path("/{numeroSerieCarte}")
     
        @Consumes({ "application/json" })
     
        @Produces({ "application/json", "text/hml" })
     
        @io.swagger.annotations.ApiOperation(value = "Création ou mise à jour d'une carte ", notes = "Crée ou met à jour une carte identifiée par son numéro de série ", response = void.class, authorizations = {
     
                @io.swagger.annotations.Authorization(value = "ClefAPI") }, tags = {})
     
        @io.swagger.annotations.ApiResponses(value = { @io.swagger.annotations.ApiResponse(code = 204, message = "Carte créée ou mise à jour", response = void.class),
     
        @io.swagger.annotations.ApiResponse(code = 400, message = "Carte non créée ou non mise à jour", response = void.class),
     
        @io.swagger.annotations.ApiResponse(code = 500, message = "Une erreur inattendue s'est produite", response = void.class) })
     
     
     
        public Response setCarte(@ApiParam(value = "Identifiant unique de la requête à des fins de traçabilité", required = true) @HeaderParam("id") Integer id,
     
                @ApiParam(value = "Identifiant de l'opérateur ", required = true) @HeaderParam("operateur") String operateur,
     
                @ApiParam(value = "Numéro de série de la carte", required = true) @PathParam("numeroSerieCarte") String numeroSerieCarte,
     
                @ApiParam(value = "Définition de la carte à créer ou à mettre à jour au format JSON", required = true) Carte carte, @Context SecurityContext securityContext) throws NotFoundException {
     
     
     
            log.info(OPERATEUR + operateur + ". GET API PUT CARTE(" + numeroSerieCarte + "). " + ID_REQUETE + id);
     
     
     
            // Chargement du contexte de connexion au LDAP et initialisation des variables
     
            ContextSource ldapContextSource = null;
     
            final LdapTemplate ldapTemplate = new LdapTemplate();
     
            final CarteDao carteDao = new CarteDao();
     
            final ObjectMapper om = new ObjectMapper();
     
     
     
            try {
     
                ldapContextSource = LdapContextSourceFactory.getldapContextSource();
     
            } catch (final Exception e) {
     
                throw new MetierException(e);
     
            }
     
     
     
            String reponse = "";
     
            try {
     
                // Connexion au LDAP
     
                ldapTemplate.setContextSource(ldapContextSource);
     
                carteDao.setLdapTemplate(ldapTemplate);
     
     
     
                try {
     
                        final WsSrpclCafeCims ws = new WsSrpclCafeCims_Service().getWsSrpclCafeCimsSOAP();
     
                        ((BindingProvider) ws).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://annuaire.monserveur.fr/Ws_service_carte/");
     
                        // APPEL DU WS
     
    Reponse cr = ws.updateCarte(carte.getNumeroSerie()) ;
     
     
     
                } catch (final InvalidNameException e1) {
     
                    log.info("400 : Carte non créée ou non mise à jour");
     
                    log.info(e1);
     
                    throw new MetierException(e1);
     
                }
     
     
     
                try {
     
     
     
                    return Response.ok(om.writeValueAsString(reponse), MediaType.APPLICATION_JSON + CHARSET_UTF8).build();
     
                } catch (final JsonProcessingException e) {
     
                    throw new MetierException(e);
     
                }
     
     
     
            } catch (final Exception e) {
     
                // Si un problème survient lors du chargement du contexte ou autre, une exception est levé et affiché à l'écran
     
                log.info("500 : Une erreur inattendue s'est produite");
     
                log.info(e);
     
                return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(" 500 : Une erreur inattendue s'est produite").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON
     
                        + ";charset=utf-8").build();
     
            }
     
        }
    Ce service REST ci dessus fait appel à mon Web Service "updateCarte" qui me retourne lui le code 302 :

    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
     
    @WebService(name = "Ws_service_carte", targetNamespace = "http://annuaire.monserveur.fr/Ws_service_carte/")
     
    @SOAPBinding(style = SOAPBinding.Style.RPC)
     
    @XmlSeeAlso({ ObjectFactory.class })
     
    public interface WsSrpclCafeCims {  
     
     
     
        @WebMethod(operationName = "UpdateCarte", action = "http://annuaire.monserveur.fr/Ws_service_carte/UpdateCarte")
     
        @WebResult(name = "response", partName = "response")
     
        public Reponse updateCarte(@WebParam(name = "cardNumber", partName = "cardNumber") String cardNumber);
     
    }
    Je vais tester avec Postman pour voir la réponse.
    Merci

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    C'est un service REST qui appelle un service SOAP, c'est ça ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut
    C'est tout à fait ca oui.
    Et je suis complètement perdue 😰

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Et donc c'est le service SOAP qui retourne un 302. Je ne sais pas si comme le dit @thelvin, le 302 ne devrait pas être retourné par le service SOAP (ça fait 15 ans que je n'ai pas fait de SOAP, en encore avec Apache SOAP 1.0, alors je suis largué), mais je pense que le souci est possiblement un problème lié à l'authentification pour l'appel SOAP (je ne vois pas dans ton code quelque chose qui s'en charge) et le service fait un redirect (pour une page de login, comme pour un site web). Autant que je me souvienne, dans mes services SOAP je gérais ça (une requête sans authentification) par exception.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ouais, le redirect ça arrive quand un service soap est codé derrière un API d'authentification (typiquement derrière du oauth), que la requête soap n'est pas authentifiiée (manque les headers appropriés, que ce soit du Basic, du Bearer, du SAML) et que l'API d'authentification fait comme elle ferait pour un browser: remballer vers le service d'authentifiation (ce qui n'est pas la manière de faire en soap, il devrait renvoyer un 401).


    Ce que je peux te recommander, c'est de commencer par consommer ton service SOAP à la main, avec SOAP-UI par exemple. Tu verra déjà ce qui se trouve dans ce redirect.

    Vu ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                        final WsSrpclCafeCims ws = new WsSrpclCafeCims_Service().getWsSrpclCafeCimsSOAP();
                        ((BindingProvider) ws).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://annuaire.monserveur.fr/Ws_service_carte/");
                        Reponse cr = ws.updateCarte(carte.getNumeroSerie()) ;
    Tu ne fais aucune authentification. A voir avec le service en question si c'est normal.

  12. #12
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut
    Bonjour,
    En faite, j'ai bien une authentification.
    J'ai mal recopié le code, je l'ai pris dans local history 🙈

    Par exemple, pour créer les cartes, j'ai ce service Soap qui a bien un login et un mot de passe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    @WebMethod(operationName = "CreateCarte", action = "http://annuaire.monserveur.fr/Ws_service_carte")
     
        @WebResult(name = "response", partName = "response")
     
        public Reponse createCarte(
     
         @WebParam(name = "cardNumber", partName = "cardNumber") String cardNumber,
     
                @WebParam(name = "uidOwner", partName = "uidOwner") String uidOwner,
     
                @WebParam(name = "login", partName = "login") String login,
     
         @WebParam(name = "password", partName = "password") String password ;
    Et j'ai exactement la même erreur lorsque je l'appelle ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    final WsSrpclCafeCims ws = new WsSrpclCafeCims_Service().getWsSrpclCafeCimsSOAP();
     
    ((BindingProvider) ws).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://annuaire.monserveur.fr/Ws_service_carte/");
     
    Reponse cr = ws.createCarte(carte.getNumeroSerie(), carte.getOwner(), properties.getProperty("db.login"), properties.getProperty("db.password")) ;
    Ce matin j'installe postman et soap-ui pour voir si je peux mieux voir le probleme

  13. #13
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut
    Je n'ai pas plus d'informations avec Postman.

    J'ai lancé le Service saop createCarte dans soap-ui et il a bien créé la carte.

    Idem avec updateCarte, en mettant le login et mot de passe , il a bien mis à jour la carte via soap-ui.

    Je ne vois pas où voir comment se fait la redirection vers ce code erreur 302 dans soap-ui ?

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ce que tu montre en exemple de code, ce n'est pas une authentification sur le service soap, c'est juste appeler une méthode qui prend un login et un password. Le service lui même n'est pas authentifié. Le 302 viens a priori d'une authentification.

    Citation Envoyé par GDS_Strou Voir le message
    Je ne vois pas où voir comment se fait la redirection vers ce code erreur 302 dans soap-ui ?
    Si tu veux voir ce qui se passe entre ton service REST et ton SOAP, tu peux simplement sniffer la connection, c'est en général le moyen le plus simple pour analyser des service réseau selon moi

  15. #15
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut
    J'ai trouvée une piste concernant le probleme.
    À cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                        ((BindingProvider) ws).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://annuaire.monserveur.fr/Ws_service_carte/");
    Si je change le lien par (http://localhost:8080/), j'ai toujours une exception mais c'est un code statut http 200 : OK.

    Comment gérer ce Endpoint_adress_property dynamiquement du coup, car je pense que chaque client aura une IP différente ?

    De plus, pourquoi une exception http 200 si le retour est OK ?

    Merci

  16. #16
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 117
    Points : 46
    Points
    46
    Par défaut
    Le probleme a été trouvé.
    Il fallait tout simplement modifié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ((BindingProvider) ws).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://annuaire.monserveur.fr/Ws_service_carte/"
    Par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ((BindingProvider) ws).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://annuaire.monserveur.fr/Ws_service_carte.php"
    3 jours de recherches pour si peu 😭
    Merci à ceux qui m'ont aidé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Éclaircissements sur les web services
    Par __fabrice dans le forum Langage
    Réponses: 3
    Dernier message: 02/11/2007, 08h29
  2. Projet sur les Web Services avec J2EE
    Par papus1984 dans le forum Services Web
    Réponses: 2
    Dernier message: 31/03/2007, 00h34
  3. [Débutant] besoin d'aide sur les web services
    Par Diangelita dans le forum Services Web
    Réponses: 3
    Dernier message: 20/01/2006, 08h41
  4. code retour UNIX sur erreur ORA
    Par vinz_07 dans le forum Administration
    Réponses: 7
    Dernier message: 25/08/2004, 11h04

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