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

Composants VCL Delphi Discussion :

RESTClient, RESTRequest, RESTResponse


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Avatar de annemarie
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 109
    Points
    109
    Billets dans le blog
    1
    Par défaut RESTClient, RESTRequest, RESTResponse
    Bonjour,

    je tourne en rond en utilisant ces composants pour discuter avec une API Rest.

    Les solutions que j'ai trouvées pour ajouter des valeurs dans le Header du message POST

    RESTClient1.Params.AddItem('Authorization', 'Bearer ' + GBL_AccessToken, TRESTRequestParameterKind.pkHTTPHEADER);

    ou

    RESTClient1.SetHTTPHeader('Authorization', 'Bearer ' + GBL_AccessToken);

    ne marchent à priori pas. La première ajoute la valeur dans le Body, la seconde ne fait rien.

    Par ailleurs je n'ai pas trouvé non plus le moyen de voir ni la liste des valeurs du Header, ni la chaine complète envoyée en JSON à l'URL.

    des Idées ou vécu, car je n'ai pas su trouver d'exemple qui marche ?

    J'utilise Delphi 12

    Merci par avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 070
    Points : 41 032
    Points
    41 032
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Déjà est-ce que cela fonctionne avec REST Debuger ?
    De mon vécu, je n'ai eu à faire qu'avec les API de Woocommerce et de Prestashop, jamais ne nécessitant une autorisation.

    Pourtant j'ai vu passer ce genre de demande, je suggère une petite recherche sur le forum i.e ici
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 690
    Points : 5 286
    Points
    5 286
    Par défaut
    As-tu essayé RESTClient1.AddParameter('Name', 'Value', TRESTRequestParameterKind.pkHTTPHEADER); ?

    https://docwiki.embarcadero.com/Libr...t.AddParameter

  4. #4
    Membre régulier
    Avatar de annemarie
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 109
    Points
    109
    Billets dans le blog
    1
    Par défaut j'ai essayé les 3 méthodes que j'ai trouvé
    J'ai un peu avancé grace au lien de Sergio,

    mais je reste bloquée sur un header indispensable.

    mon 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     function TFormNetwork.RequestAPI(Chaine : string): string;
    var
      MyRESTClient: TRESTClient;
      MyRESTRequest: TRESTRequest;
      MyRESTResponse: TRESTResponse;
      MyOAuth2Authenticator: TOAuth2Authenticator;
    begin
      Result := '';
      MyRESTClient         := TRESTClient.Create(WC_BASE_URL);
      MyRESTRequest        := TRESTRequest.Create(Self);
      MyRESTResponse       := TRESTResponse.Create(Self);
      MyOAuth2Authenticator:= TOAuth2Authenticator.Create(Self);
      try
        formLogs.LogSystem('Request to Silae''s API:  ' + Chaine);
     
        MyRESTRequest.Client := MyRESTClient;
        MyRESTRequest.Response := MyRESTResponse;
     
        MyRESTClient.BaseURL := WC_BASE_ENDPOINT  + Chaine;
        MyRESTClient.Authenticator := MyOAuth2Authenticator;
        MyRESTClient.ContentType := 'application/json';
     
        MyOAuth2Authenticator.ClientID := CLIENT_ID;
        MyOAuth2Authenticator.ClientSecret := CLIENTSECRET_PRIMAIRE;
        MyOAuth2Authenticator.AccessToken := GBL_AccessToken;
        MyOAuth2Authenticator.TokenType := TOAuth2TokenType.ttBEARER;
        MyOAuth2Authenticator.ResponseType := TOAuth2ResponseType.rtCODE;
        MyOAuth2Authenticator.Scope := scope;
     
    //  MyRESTClient.Params.AddHeader('Authorization', 'Bearer ' + GBL_AccessToken);
        MyRESTClient.Params.AddHeader('Ocp-Apim-Subscription-Key', CLE_PRINCIPALE);
     
        MyRESTClient.Params.AddHeader('dossiers;', '');
        MyRESTClient.Params.AddItem('dossiers;', '', TRESTRequestParameterKind.pkHTTPHEADER);
        MyRESTClient.SetHTTPHeader('dossiers;', '');
    //
        MyRESTClient.Params.AddItem('typeDossiers', '1');
    //
      try
        MyRESTRequest.Method := rmPOST;
        MyRESTRequest.Execute;
        formMain.MemoRequest.Lines.Add(GetRESTClientInfoAsString(MyRESTClient, MyRESTRequest)); //GetRESTClientInfoAsString(RESTClient1, RESTRequest1);
        formLogs.LogSystem('');
     
        Result := MyRESTResponse.JSONText;
      except
        on E: Exception do formLogs.LogExcept('Except on RequestAPI: ' + E.Message);
      end;
      finally
        FreeAndNil(MyRESTClient);
        FreeAndNil(MyRESTRequest);
        FreeAndNil(MyRESTResponse);
        FreeAndNil(MyOAuth2Authenticator);
      end;
    end;
    Cela me retourne :

    {
    "errors": [
    {
    "code": "403",
    "message": "Le header 'dossiers' est obligatoire"
    }
    ],
    "source": "Proxy"
    }

  5. #5
    Membre régulier
    Avatar de annemarie
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 109
    Points
    109
    Billets dans le blog
    1
    Par défaut J'avance un peu ...
    MyRESTClient.Params.AddHeader('dossiers',';'); marche

    donc cela veut dire que AddHearder marche.

    J'ai maintenant une Erreur 500, je vais analyser mais à priori je peux clôturer le post.

    Merci à tous

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

Discussions similaires

  1. RestRequest en Memo.Text
    Par Alferox dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 26/11/2023, 12h14
  2. Error : RestClient is not found C#
    Par nana92 dans le forum C#
    Réponses: 8
    Dernier message: 25/05/2017, 10h15
  3. Réponses: 0
    Dernier message: 20/08/2013, 14h30
  4. [Apache/NGINX/RestClient] Refuser les requêtes "OPTIONS"
    Par PP(Team) dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 1
    Dernier message: 13/08/2013, 10h48
  5. RestClient avec urlConnection
    Par Rohan21 dans le forum Services Web
    Réponses: 0
    Dernier message: 25/05/2013, 02h45

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