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

Développement de jobs Discussion :

[TOS DI 7.0.1] tRestClient Erreur Java sur GET


Sujet :

Développement de jobs

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [TOS DI 7.0.1] tRestClient Erreur Java sur GET
    Bonjour à tous,

    Je me permets de venir vers vous concernant un soucis que je rencontre avec le composant tRestClient via la méthode GET.

    Avant tout, je précise que j'envoi plusieurs requêtes à la même API, la première fonctionne sans soucis, tandis que les autres "endpoints" me renvoient systématiquement un message d'erreur.
    Ces mêmes requêtes fonctionnent parfaitement et me retournent ma réponse en JSON via Firefox, Postman ou curl.
    A l'heure actuelle, je récupère ces réponses via un script PowerShell dans lequel je réalise un certain nombre de calculs. Cela fonctionne, mais ce n'est pas le plus rapide et je compte donc faire la même chose en utilisant Talend / mySQL.

    Sans aucune sorte de paramétrage, je reçois l'erreur suivante :
    Exception in component tRESTClient_1 (APITest)
    javax.ws.rs.ProcessingException: java.lang.IllegalArgumentException: Media type separator is missing
    at org.apache.cxf.jaxrs.client.WebClient.handleResponse(WebClient.java:1157)
    at org.apache.cxf.jaxrs.client.WebClient.doResponse(WebClient.java:1126)
    at org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:1051)
    at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:897)
    at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:866)
    at org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:431)
    at org.apache.cxf.jaxrs.client.WebClient.get(WebClient.java:611)
    at local_project.apitest_0_1.APITest.tRESTClient_1Process(APITest.java:816)
    at local_project.apitest_0_1.APITest.runJobInTOS(APITest.java:1259)
    at local_project.apitest_0_1.APITest.main(APITest.java:1110)
    Caused by: java.lang.IllegalArgumentException: Media type separator is missing
    at org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.handleMediaTypeWithoutSubtype(MediaTypeHeaderProvider.java:191)
    at org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.internalValueOf(MediaTypeHeaderProvider.java:80)
    at org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.valueOf(MediaTypeHeaderProvider.java:66)
    at org.apache.cxf.jaxrs.utils.JAXRSUtils.toMediaType(JAXRSUtils.java:1711)
    at org.apache.cxf.jaxrs.impl.ResponseImpl.getMediaType(ResponseImpl.java:248)
    at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:331)
    at org.apache.cxf.jaxrs.client.AbstractClient.readBody(AbstractClient.java:539)
    at org.apache.cxf.jaxrs.client.WebClient.handleResponse(WebClient.java:1138)
    ... 9 more
    Quelque soit le paramétrage utilisé, j'obtiens le même message. Enfin, la même requête effectuée via le composant tSysteme avec une commande curl me retourne bien ma réponse. Je pourrai donc partir là dessus mais je pensai le composant tRestClient plus adapté.

    Je m'arrache les cheveux sur ce problème depuis quelques temps... Auriez-vous une idée de ce qui peut causer cette erreur ?

    PS: j'ai posté la même question sur Talend Community mais je n'ai eu aucun retour permettant de débloquer ce soucis.

    Merci !

  2. #2
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Bonjour,

    Quel est le paramétrage que vous avez renseigné dans votre composant ?

    L'erreur semble indiqué qu'il y aurait une erreur sur le type de media.

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Par défaut, je n'ai aucun paramétrage spécifique. J'ai essayé de différentes façon et notamment en rajoutant "content-type" - "application/json" mais ça ne fait aucune différence. Voici un screenshot des paramètres avancés:
    Nom : tRestClient2.PNG
Affichages : 912
Taille : 21,5 Ko

    Lorsque j’exécute ma requête via Firefox, voici les entêtes qui ressortent:
    Nom : entêtes.PNG
Affichages : 890
Taille : 24,0 Ko

    J'ignore si la réponse se trouve dedans, mais toujours est-il que si j'indique les mêmes entêtes de requêtes, et plus spécifiquement "accept-encoding" - "gzip", j'arrive à récupérer ma réponse, mais qui apparaît sous cette forme:
    Nom : result.PNG
Affichages : 860
Taille : 29,6 Ko

    Cela a donc a voir avec l'encoding ?


    edit: il n'y a pas de décompresseur gzip attaché au composant tRESTClient, c'est donc pour cela qu'il me retourne cette série de caractères. Pour autant, si je ne spécifie pas "accept-encoding" - "gzip", je reçois toujours cette erreur Java. J'ajoute que je viens d'essayer avec le composant tHTTPRequest et je peux récupérer ma réponse. Je peux donc contourner ce problème, mais qu'est-ce qui explique l'erreur de TRestClient???

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 34
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    Le retour de votre api lorsque qu'elle est effectuée sous curl est sous quelle forme ?
    D'après les infos de la reponse à la requete, il semblerait que celle si soit sous la forme JSON mais gzippée. Donc il faut ajouter les entête:
    Content-Type: application/json;charset=UTF-8
    Accept-Encoding: gzip
    Il faudrait essayer l'entête :
    Accept-Encoding: identity
    afin qu'il n'y ai pas de compression si le serveur veux bien.
    D'ou les symboles dans le tlogrow.
    Il faut de gzippée à la lecture via un tjavarow par exemple.

    Bon courage

Discussions similaires

  1. [WM22] Erreur java sur android
    Par apprentidev007 dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 27/11/2017, 23h26
  2. Eclipse erreur : java.lang.OutOfMemoryError: Java heap space
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/04/2006, 11h28
  3. Réponses: 16
    Dernier message: 10/01/2006, 22h02
  4. Réponses: 5
    Dernier message: 12/12/2005, 13h13

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