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

Web & réseau Delphi Discussion :

Service Web Colissimo en REST


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    dem
    dem est déconnecté
    Membre actif

    Inscrit en
    Juillet 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Juillet 2003
    Messages : 114
    Par défaut Service Web Colissimo en REST
    Bonjour,
    Certains d'entre vous auraient ils par hasard déjà développé un client pour récupérer des étiquettes Colissimo en REST avec Delphi ?
    Je suis en Delphi 11.
    La méthode GetProductInter fonctionne très bien., le checkGenerateLabel également, mais la generateLabel me renvoie systématiquement des erreurs 406 ou 415...
    Avec Restdebugger le problème est exactement le même.
    J'ai testé mon JSON avec PostMan sans problème.
    Bonne journée à tous !

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Ajoute un tracer de réseau ou alors refait l'appel en Indy en ajoutant un IOIntercept pour voir ce qui est échangé.

    Tu as un header incorrect problablement ou un encodage eronnée

    HTTP 406 Not Acceptable - c'est ton Accept dans ta requête qui demande un résultat que le serveur ne peut pas fournir, par exemple, tu peux demander PDF ou XML, si Accept omis c'est XML hérité de la version SOAP
    HTTP 415 Unsupported Media Type - signe d'un encodage non souhaité, dois-tu définir dans cette api des éléments en application/json, text/plain, selon la doc le retour est multipart/mixed


    Voir https://www.colissimo.entreprise.lap...chissement.pdf
    Page 118-119 pour le JSON
    Page 120 pour le retour XML montré en exemple, qu'un TRESTClient ne peut pas accepter par défaut puisqu'il attend un JSON

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <resource path="generateLabel">
        <method name="POST">
            <request>
                <param name="apiKey" style="header" type="xs:string"/>
                <representation mediaType="application/json"/>
            </request>
            <response>
                <representation mediaType="multipart/mixed;charset=UTF-8"/>
            </response>
        </method>
    </resource>

    Note la différence de retour de GetProductInter et checkGenerateLabel qui renforce la problématique d'appeler un service REST ou l'on envoie un JSON mais où l'on reçoit un XML qui lui même contient un JSON

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <resource path="checkGenerateLabel">
        <method name="POST">
            <request>
                <param name="apiKey" style="header" type="xs:string"/>
                <representation mediaType="application/json"/>
            </request>
            <response>
                <representation mediaType="application/json;charset=UTF-8"/>
            </response>
        </method>
    </resource>
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <resource path="getProductInter">
        <method name="POST">
            <request>
                <param name="apiKey" style="header" type="xs:string"/>
                <representation mediaType="application/json"/>
            </request>
            <response>
                <representation mediaType="application/json;charset=UTF-8"/>
            </response>
        </method>
    </resource>


    Mais je suppose que depuis hier, tu as déjà résolu ton problème de retour en XML et non en JSON, ce qui oblige à bidouiller le TRESTClient ou alors a utiliser un TIdHTTP pour une gestion plus manuelle.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    dem
    dem est déconnecté
    Membre actif

    Inscrit en
    Juillet 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Juillet 2003
    Messages : 114
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Ajoute un tracer de réseau ou alors refait l'appel en Indy en ajoutant un IOIntercept pour voir ce qui est échangé.

    Tu as un header incorrect problablement ou un encodage eronnée

    HTTP 406 Not Acceptable - c'est ton Accept dans ta requête qui demande un résultat que le serveur ne peut pas fournir, par exemple, tu peux demander PDF ou XML, si Accept omis c'est XML hérité de la version SOAP
    HTTP 415 Unsupported Media Type - signe d'un encodage non souhaité, dois-tu définir dans cette api des éléments en application/json, text/plain, selon la doc le retour est multipart/mixed
    Merci en effet après plusieurs essais avec des headers différents qui me donnaient des erreurs différentes y compris du 500, j'avais l'aissé un contenttype application/json comme pour le checkGenerateLabel. Il suffisait de remplacer par */*.
    Maintenant il faut que je décode le multipart.....

    Citation Envoyé par ShaiLeTroll Voir le message
    Voir https://www.colissimo.entreprise.lap...chissement.pdf
    Page 118-119 pour le JSON
    Page 120 pour le retour XML montré en exemple, qu'un TRESTClient ne peut pas accepter par défaut puisqu'il attend un JSON

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <resource path="generateLabel">
        <method name="POST">
            <request>
                <param name="apiKey" style="header" type="xs:string"/>
                <representation mediaType="application/json"/>
            </request>
            <response>
                <representation mediaType="multipart/mixed;charset=UTF-8"/>
            </response>
        </method>
    </resource>

    Note la différence de retour de GetProductInter et checkGenerateLabel qui renforce la problématique d'appeler un service REST ou l'on envoie un JSON mais où l'on reçoit un XML qui lui même contient un JSON

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <resource path="checkGenerateLabel">
        <method name="POST">
            <request>
                <param name="apiKey" style="header" type="xs:string"/>
                <representation mediaType="application/json"/>
            </request>
            <response>
                <representation mediaType="application/json;charset=UTF-8"/>
            </response>
        </method>
    </resource>
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <resource path="getProductInter">
        <method name="POST">
            <request>
                <param name="apiKey" style="header" type="xs:string"/>
                <representation mediaType="application/json"/>
            </request>
            <response>
                <representation mediaType="application/json;charset=UTF-8"/>
            </response>
        </method>
    </resource>


    Mais je suppose que depuis hier, tu as déjà résolu ton problème de retour en XML et non en JSON, ce qui oblige à bidouiller le TRESTClient ou alors a utiliser un TIdHTTP pour une gestion plus manuelle.
    La doc est mal foutue pour la partie REST, ce qu'on reçoit ressemble plutôt à ça, pas du tout à du XML qui est par la partie SOAP :

    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
    --uuid:3bc06fe6-ba10-47a8-a403-e5bd589f64dc
    Content-Type: application/json;charset=UTF-8
    Content-Transfer-Encoding: binary
    Content-ID: <jsonInfos>
     
     
    {"messages":[{"id":"0","type":"INFOS","messageContent":"La requête a été traitée avec succès","replacementValues":[]}],"labelXmlV2Reponse":null,"labelV2Response":{"parcelNumber":"XXXXXXXX","parcelNumberPartner":"XXXXXXXXXXXXXXXX","pdfUrl":null,"fields":null}}
    --uuid:3bc06fe6-ba10-47a8-a403-e5bd589f64dc
    Content-Type: application/octet-stream
    Content-Transfer-Encoding: binary
    Content-ID: <label>
     
     
    %PDF-1.3
    3 0 obj
    <</Type /Page
    ..... etc....
    Merci pour le truc sur L'Intercept des Indy, j'ai pu comparer les en-tête Indy avec ceux de Postman. et faire les tests aussi bien avec les composants TRESTxxx et idHTTP. Mais bon, d'après une réponse de pprem dans un autre post il n'a pas totalement confiance dans ces composants TRESTxxx, à voir....
    Mais que de tâtonnements quand on a pas l'habitude de ce domaine là...

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Dev full Stack
    Inscrit en
    Septembre 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev full Stack

    Informations forums :
    Inscription : Septembre 2022
    Messages : 5
    Par défaut Bonjour êtes vous sur la préparation d'un projet pro ??? Avec du monde ????????
    Bonjour j'aimerais savoir si vous avez pour but de réaliser un projet professionnel ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Dev full Stack
    Inscrit en
    Septembre 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev full Stack

    Informations forums :
    Inscription : Septembre 2022
    Messages : 5
    Par défaut Et au niveau du client pour vous connecter à votre serveur Web colissimo
    Avez vous déjà en tête un rendu pour votre service Web ?

  6. #6
    dem
    dem est déconnecté
    Membre actif

    Inscrit en
    Juillet 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Juillet 2003
    Messages : 114
    Par défaut
    Citation Envoyé par Pacific_Prime Voir le message
    Bonjour j'aimerais savoir si vous avez pour but de réaliser un projet professionnel ?
    Absolument, c'est pour une application de gestion de magasin, mais desktop, pas du tout web.

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 25/09/2013, 09h26
  2. Service web REST et c++
    Par toopac dans le forum C++/CLI
    Réponses: 9
    Dernier message: 18/06/2010, 18h37
  3. Service web REST en VB.NET Hey!Spread
    Par hbhhhbhh dans le forum Services Web
    Réponses: 0
    Dernier message: 21/05/2010, 14h54
  4. Implémenter un service web RESTful en Java
    Par Arnaud_03 dans le forum REST
    Réponses: 4
    Dernier message: 21/04/2009, 18h06
  5. Implémenter un service web RESTful
    Par Arnaud_03 dans le forum Services Web
    Réponses: 4
    Dernier message: 21/04/2009, 18h06

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