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 :

Envoyer une requête depuis un serveur et non depuis le client


Sujet :

Services Web Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut Envoyer une requête depuis un serveur et non depuis le client
    Bonjour,

    Je cherche à envoyer des données (notifications) sur un autre serveur (firebase) depuis un serveur utilisant des services REST (library javax.ws...)

    Dans les tutoriels comme celui-ci, je trouve toutes les infos pour l'envoi de requêtes depuis un client vers un serveur, mais je ne trouve nulle part comment envoyer une requête depuis un serveur.

    Quelqu'un pourrait-il me suggérer un tuto ou donner des explications ?

    Merci,
    OS : LinuxMint 20

  2. #2
    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
    le fait que ton client rest tourne au sein d'un serveur web ne change rien à la procédure. Ca reste un client et ça reste le même code.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Ah bon ?

    pour l'envoi d'une requête, je faisait en javascript et je réceptionnais avec JERSEY.

    Mais envoyer depuis Jersey vers un autre Jersey je n'ai pas fait.

    Pourriez-vous m'indiquer un lien internet ou un bout de code d'exemple s'il vous plaît ?

    J'ai trouvé cette page mais je ne suis pas sur que ce soit ce que je cherche car j'ai l'impression que c'est pour les serveurs glassfish !? : https://jersey.java.net/documentation/latest/sse.html
    OS : LinuxMint 20

  4. #4
    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
    Ha oui, je pensais que tu avais un client java

    Ben il faut faire un client java

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Hello,

    Je suis donc en train de construire mon client comme vous pouvez le voir ci-dessous, mais j'ai le message d'erreur suivant dans Eclipse à propos de la méthode newClient The method newClient(Configuration) in the type ClientBuilder is not applicable for the arguments (ClientConfig) :

    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
     
    import javax.ws.rs.client.Client;
    import javax.ws.rs.client.ClientBuilder;
    import javax.ws.rs.client.Entity;
    import javax.ws.rs.client.Invocation;
    import javax.ws.rs.client.WebTarget;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
     
    import org.glassfish.jersey.client.ClientConfig;
     
    import com.sun.jersey.api.client.filter.LoggingFilter;
     
    public class Service {
     
    	public static void main(String[] args){
     
    		Client client = ClientBuilder.newClient( new ClientConfig().register( LoggingFilter.class ) );
    		WebTarget webTarget = client.target("http://localhost:8080/JerseyDemos/rest").path("employees");
     
    		Employee emp = new Employee();
    		emp.setId(1);
    		emp.setName("David Hasselof");
     
    		Invocation.Builder invocationBuilder =  webTarget.request(MediaType.APPLICATION_JSON);
    		Response response = invocationBuilder.post(Entity.entity(emp, MediaType.APPLICATION_JSON));
     
    		System.out.println(response.getStatus());
    		System.out.println(response.readEntity(String.class));
    }
    }
    OS : LinuxMint 20

  6. #6
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    - soit l'import est pas bon (ClientConfig d'un autre package) non ça à l'air bon ça
    - soit tu utilises une autre version de Jersey que dans les exemples ha bin non, non plus...

    EDIT: j'ai juste viré le ClientConfig qui sert pas à grand chose et là ça compile
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Merci pour votre aide !

    J'ai testé deux méthodes ! Tout d'abord la première que j'ai indiqué au début de ce post et une autre ...

    J'ai aussi testé avec RESTclient et cela a fonctionné, il me faut maintenant adapter à mon code :
    Nom : capture d'écran1.png
Affichages : 467
Taille : 29,7 Ko


    1-
    EDIT: j'ai juste viré le ClientConfig qui sert pas à grand chose et là ça compile
    J'ai essayé ce que vous m'avez conseillé. Il est vrai que ça compile mais je suis confronté à d'autres problèmes que je n'arrive pas à résoudre :
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Client client = ClientBuilder.newClient();
    WebTarget webTarget = client.target("https://fcm.googleapis.com/fcm/send");
     
    		Invocation.Builder invocationBuilder =  webTarget.request(MediaType.APPLICATION_JSON)
                    .header("Content-Type", MediaType.APPLICATION_JSON)
            .header("Authorization", "key=" + "<clé>");
    Response response = invocationBuilder.post(Entity.entity("{\"to\":\"<identifiant téléphone>\",\"notification\":{\"title\":\"hello title\", \"body\":\"hello body\"}}", MediaType.APPLICATION_JSON));
     
    		System.out.println(response.getStatus());
    		System.out.println(response.readEntity(String.class));
    Voici le message d'erreur que j'obtiens dans Eclipse :
    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
    janv. 17, 2017 5:01:35 PM com.sun.jersey.api.container.filter.LoggingFilter filter
    INFOS: 2 * Server in-bound request
    2 > GET http://127.0.0.1:8080/API/...
    2 > user-agent: curl/7.29.0
    2 > host: 127.0.0.1:8080
    2 > accept: */*
    2 > 
     
    janv. 17, 2017 5:01:35 PM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException
    GRAVE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
    java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/binding/AbstractBinder
    	at org.glassfish.jersey.client.ClientConfig.<init>(ClientConfig.java:468)
    	at org.glassfish.jersey.client.JerseyClientBuilder.<init>(JerseyClientBuilder.java:94)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    	at java.lang.reflect.Constructor.newInstance(Unknown Source)
    	at java.lang.Class.newInstance(Unknown Source)
    	at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:116)
    	at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:206)
    	at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:86)
    	at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:114)
    	at fr.server.service.Service.<init>(Service.java:51)
    	at fr.server.rest.LnjRestServer.runScheduler(LnjRestServer.java:998)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
    	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: org.glassfish.hk2.utilities.binding.AbstractBinder
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
    	... 55 more
     
    janv. 17, 2017 5:01:35 PM org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: Servlet.service() for servlet [Jersey RESTful Application] in context with path [/LNJ] threw exception [java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/binding/AbstractBinder] with root cause
    java.lang.ClassNotFoundException: org.glassfish.hk2.utilities.binding.AbstractBinder
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
    	at org.glassfish.jersey.client.ClientConfig.<init>(ClientConfig.java:468)
    	at org.glassfish.jersey.client.JerseyClientBuilder.<init>(JerseyClientBuilder.java:94)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    	at java.lang.reflect.Constructor.newInstance(Unknown Source)
    	at java.lang.Class.newInstance(Unknown Source)
    	at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:116)
    	at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:206)
    	at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:86)
    	at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:114)
    	at fr.server.service.Service.<init>(Service.java:51)
    	at fr.server.rest.LnjRestServer.runScheduler(LnjRestServer.java:998)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
    	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)
    2-et la deuxième solution qui compile du premier pour moi 'après insertion des jar bien sur ...) :
    le code :
    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
     
    import com.sun.jersey.api.client.Client;
    import com.sun.jersey.api.client.ClientResponse;
    import com.sun.jersey.api.client.WebResource;
    .....
    try {
     
    	Client client = Client.create();
     
    	WebResource webResource = client
    	   .resource("https://fcm.googleapis.com/fcm/send");
     
    	String input = "{\"to\":\"<id tel>\",\"notification\":{\"title\":\"hello title\",\"body\":\"hello body\"}}";
     
    	ClientResponse response = webResource.header("Content-Type", "application/json").type("application/json").header("Authorization", "key=" + "<clé>")
    	   .post(ClientResponse.class, input);
     
    	if (response.getStatus() != 201) {
    		throw new RuntimeException("Failed : HTTP error code : "
    		     + response.getStatus());
    	}
     
    	System.out.println("Output from Server .... \n");
    	String output = response.getEntity(String.class);
    	System.out.println(output);
     
      } catch (Exception e) {
     
    	e.printStackTrace();
     
      }
    et le message d'erreur d'Eclipse :
    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
    janv. 17, 2017 5:06:57 PM com.sun.jersey.api.container.filter.LoggingFilter filter
    INFOS: 2 * Server in-bound request
    2 > GET http://127.0.0.1:8080/API/...
    2 > user-agent: curl/7.29.0
    2 > host: 127.0.0.1:8080
    2 > accept: */*
    2 > 
     
    com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    	at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:155)
    	at com.sun.jersey.api.client.Client.handle(Client.java:652)
    	at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
    	at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
    	at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:570)
    	at fr.server.service.Service.<init>(Service.java:30)
    	at fr.server.rest.LnjRestServer.runScheduler(LnjRestServer.java:998)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
    	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    	at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    	at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
    	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(Unknown Source)
    	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
    	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source)
    	at com.sun.jersey.client.urlconnection.URLConnectionClientHandler$1$1.getOutputStream(URLConnectionClientHandler.java:238)
    	at com.sun.jersey.api.client.CommittingOutputStream.commitStream(CommittingOutputStream.java:117)
    	at com.sun.jersey.api.client.CommittingOutputStream.write(CommittingOutputStream.java:89)
    	at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
    	at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)
    	at sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
    	at sun.nio.cs.StreamEncoder.flush(Unknown Source)
    	at java.io.OutputStreamWriter.flush(Unknown Source)
    	at java.io.BufferedWriter.flush(Unknown Source)
    	at com.sun.jersey.core.util.ReaderWriter.writeToAsString(ReaderWriter.java:191)
    	at com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:128)
    	at com.sun.jersey.core.impl.provider.entity.StringProvider.writeTo(StringProvider.java:88)
    	at com.sun.jersey.core.impl.provider.entity.StringProvider.writeTo(StringProvider.java:58)
    	at com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:300)
    	at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:217)
    	at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:153)
    	... 48 more
    Caused by: java.io.EOFException: SSL peer shut down incorrectly
    	at sun.security.ssl.InputRecord.read(Unknown Source)
    	... 73 more
    janv. 17, 2017 5:06:59 PM com.sun.jersey.api.container.filter.LoggingFilter$Adapter finish
    INFOS: 2 * Server out-bound response
    2 < 200
    2 < Content-Type: application/json
    2 <

    merci pour votre aide !
    OS : LinuxMint 20

  8. #8
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Est-ce que tu as importé le certificats de google dans le truststore de ton JRE?

    Cf. ici: https://docs.oracle.com/javase/tutor...ex/rstep1.html

    Les erreurs "SSL Handshake" en général ça veut juste dire qu'il a détecté un certif, et que ce dernier n'est pas trusté. Donc il faut le faire.



    [EDIT] ou alors, un protocole foireux, tel qu'expliqué ici: http://stackoverflow.com/questions/2...-during-handsh
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Bonjour,

    Donc, concernant ce problème de certificat avec "https://fcm.googleapis.com/fcm/send", voici ce que j'ai fait :
    1-J'ai regardé dans firefox tous les certificats afin de faire un export de celui qui m'intéresse.
    2-Je n'ai trouvé aucun certificat qui pourrait convenir (avec le même nom par exemple). Celui qui se rapporche le plus est "GoogleInternetAuthorityG2" dans l'onglet autorités ou alors"www.google.com" dans l'onglet serveurs.
    3-j'ai exporté via firefox le certificat "GoogleInternetAuthorityG2" vers /usr/java/lib/security en format Certificat X.509 (PEM) puis j'ai lancé la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    keytool -import -alias ca -file GoogleInternetAuthorityG2 -keystore cacerts -storepass changeit
    Mais j'ai toujours la même erreur dans mon Eclipse :
    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
    javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    	at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)
    	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)
    	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141)
    	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
    	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
    	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
    	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
    	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
    	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
    	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
    	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
    	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
    	at fr.server.service.Service.<init>(Service.java:92)
    	at fr.server.rest.LnjRestServer.runScheduler(LnjRestServer.java:1008)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
    	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.io.EOFException: SSL peer shut down incorrectly
    	at sun.security.ssl.InputRecord.read(Unknown Source)
    	... 61 more
    Peut-être ais-je utilisé le mauvais certificat puique je ne reconnais pas le nom de certif dans firefox lors de l'export.
    De plus, au sujet de l'option -alias dans la commande précédente, quel impact cela a-t-il ? puis-je choisir un alis moi-même ou faut-il respecter une forme ?

    En tout cas, cela fonctionne toujours avec RESTclient (je remet la copie d'écran). Lorsque je clique sur SEND, le téléphone reçoit quasi instantanément la notification :
    Nom : capture d'écran1.png
Affichages : 428
Taille : 29,7 Ko


    Ensuite, j'ai refait la même manip avec le certificat GeoTrustGlobalCA mais j'ai encore le même problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     keytool -import -alias ca -file GeoTrustGlobalCA -keystore cacerts -storepass changeit
    ..........
    Faire confiance à ce certificat ? [non] :  o
    Certificat ajouté au fichier de clés

    Merci beaucoup !
    OS : LinuxMint 20

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Le problème que j'ai rencontré venait du proxy en fait. Pourtant, le navigateur accédait sans problèmes à internet.
    J'ai pû résoudre ce problème grâce à Tinyproxy.
    OS : LinuxMint 20

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

Discussions similaires

  1. [MySQL-5.6] Envoyer une requête HTTP depuis MySQL
    Par noemieze dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 13/07/2014, 11h39
  2. Envoyer une requête SQL depuis un VBS
    Par YLKweb dans le forum VBScript
    Réponses: 6
    Dernier message: 11/07/2014, 17h11
  3. Envoyer une requête http au serveur
    Par soso78 dans le forum VBScript
    Réponses: 2
    Dernier message: 08/10/2008, 10h54
  4. Réponses: 2
    Dernier message: 07/03/2006, 11h52
  5. Comment envoyer une requête POST via HTTP ?
    Par pdtor dans le forum C++
    Réponses: 2
    Dernier message: 13/09/2005, 05h54

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