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

WinDev Discussion :

Envoi des documents avec Rest API


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 32
    Points
    32
    Par défaut Envoi des documents avec Rest API
    Envoi des documents avec Rest API


    Bonjour à tous,

    je dois interagir avec une API basé sur REST.
    Quand j'utilise la méthode Post c'est ok.
    sauf pour envoyer des documents le Webservice me retourne une erreur (mais trop générique pour pouvoir avec une piste

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <html><RC><head><title>403 Forbidden</title></head><RC><body><RC><center><h1>403 Forbidden</h1></center><RC><hr><center>Microsoft-Azure-Application-Gateway/v2</center><RC></body><RC></html><RC>

    Voici les codes utilisés

    Code 1 :

    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
    req est un httpRequête
    req.Méthode = httpPost
    req.URL = monurl
    req.Entête["Authorization"] = "Bearer " + MonToken // Token d'authentification
     
    req.ContentType = "multipart/form-data"
     
    req..IgnoreErreur = httpIgnoreCertificatInvalide + httpIgnoreCertificatExpiré + httpIgnoreNomCertificatInvalide
    sFic est chaîne ="C:\ttt.png"
     
    lIdForm est une chaîne = "TEST"
    HTTPCréeFormulaire(lIdForm)
     
    HTTPAjouteFichier(lIdForm, "Files", sFic )
    HTTPEnvoieFormulaire(lIdForm, req.URL, httpPost, "AGENT","Authorization: Bearer " + MonToken )  
     
    Info( HTTPDonneRésultat(httpRésultat))

    Code 2 :

    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
    req est un httpRequête
    req.Méthode = httpPost
    req.URL = monurl 
    req.Entête["Authorization"] = "Bearer " + MonToken // Token d'authentification
    sh est chaîne ="C:\ttt.png"
     
    vParamAPI est un Variant
    sMonDoc est un Buffer=Encode(fChargeBuffer(sh),encodeBASE64)
    vParamAPI.files=sMonDoc
    req.Contenu = VariantVersJSON(vParamAPI)
     
     
    réponseHTTP est un restRéponse = RESTEnvoie(req)
     
    Info(réponseHTTP.Contenu)

    Mais ne fonction toujours pas

    Des idées ?
    Merci D'avance

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Je ne vais pas pouvoir te donner de solution, mais une piste : utilise SoapUi ou Postman pour trouver les bons paramètres à utiliser.
    Postman a un option qui te permet d'avoir le code de connexion (Java notamment) que tu pourras relativement facilement adapter en WLangage.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 32
    Points
    32
    Par défaut
    Bonjour ,

    sur Postman c'a marche bien mais malheureusement ça ne m'a pas aidé ,voici le code java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("text/plain");
    RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
      .addFormDataPart("files","/C:/ttt.png",
        RequestBody.create(MediaType.parse("application/octet-stream"),
        new File("/C:/ttt.png")))
      .build();
    Request request = new Request.Builder()
      .url("monurl")
      .method("POST", body)
      .addHeader("Authorization", "Bearer montkoenxxxx")
      .build();
    Response response = client.newCall(request).execute();

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Le code java que tu montres est pour le POST, non ?
    cf ligne 11 :
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Le code java que tu montres est pour le POST, non ?
    cf ligne 11 :
    Oui c'est POST

  6. #6
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par khaery900 Voir le message
    Envoi des documents avec Rest API


    Bonjour à tous,

    je dois interagir avec une API basé sur REST.
    Quand j'utilise la méthode Post c'est ok.
    Ben, avec Postman, si tu testes avec du REST, ça te donne quoi ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  7. #7
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Ben, avec Postman, si tu testes avec du REST, ça te donne quoi ?
    sur Postman j'ai un retour 200 ok sans problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
        "success": true,
        "errorCode": null,
        "errorText": null
    }
    Nom : Capture.PNG
Affichages : 1287
Taille : 91,0 Ko

  8. #8
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Je ne suis pas un expert java, loin de là, mais dans ton code java, je ne vois pas d'appel REST mais POST.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2021
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2021
    Messages : 23
    Points : 56
    Points
    56
    Par défaut
    Bonjour khaery,

    Pouvez-vous essayer d'envoyer votre fichier avec le code suivant :

    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
     
    cMaRequete		est un restRequête
    cMaReponse		est un restRéponse
    sMonToken		est une chaîne
    sNomFormulaire	est une chaîne	= DonneGUID(guidBrut)
    sNomFichier		est une chaîne	= "C:\Temp\fichier.png"
     
    HTTPCréeFormulaire(sNomFormulaire)
    HTTPAjouteFichier(sNomFormulaire, "fichier", sNomFichier)
     
    cMaRequete.Méthode = httpPost
    cMaRequete.Entête["Authorization"] = "Bearer " + sMonToken
    cMaRequete.URL = "http://<mon_api>/"
    cMaRequete.ContentType = typeMimeFormulaireMultiPartie 
     
    cMaReponse = HTTPEnvoieFormulaire(sNomFormulaire, cMaRequete)
     
    SI ErreurDétectée ALORS
    	Erreur(ErreurInfo(errComplet))
    SINON
    	SI cMaReponse.Contenu = Vrai ALORS
    		Info("Le fichier a été envoyé.")
    	SINON
    		Erreur(cMaReponse.Contenu)
    	FIN
    FIN
    Lien de l'aide du forum Windev : https://forum.pcsoft.fr/fr-FR/pcsoft...49420/read.awp

  10. #10
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 32
    Points
    32
    Par défaut
    Merci @arthurdnt
    Mais j'ai le même message d'erreur 403
    voici la description de fonction Rest si ça peut m'aider

    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
     
        "/api/v1.0/client/{clientCompanyId}/kyc/document/{documentType}": {
          "post": {
            "tags": [
              "Client"
            ],
            "summary": "Send KYC document files for a client company\r\nDocument type possible values : NationalIdentityCard, Passport, ResidencePermit",
            "description": "Send KYC document files to identity validation service, then save it for client company.\r\n\r\nFiles should be recto document (mandatory) and verso (optional) with a maximum of 2 files.\r\n\r\nSample request:\r\n<pre>```\r\nPOST /api/v1.0/client/6ea7832f-bc2c-4565-80a9-47a0e90d9054/kyc/document/NationalIdentityCard\r\n{\r\n   \"Files\": [ \"KYC documents files\" ]\r\n}\r\n```</pre>",
            "parameters": [
              {
                "name": "clientCompanyId",
                "in": "path",
                "description": "Client company Id - Field that defines the RollingFunds client by its Id",
                "required": true,
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              {
                "name": "documentType",
                "in": "path",
                "description": "KYC document type - It can take one of these values: NationalIdentityCard, Passport, ResidencePermit or DriverLicense",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            ],
            "requestBody": {
              "content": {
                "multipart/form-data": {
                  "schema": {
                    "type": "object",
                    "properties": {
                      "files": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "binary"
                        }
                      }
                    }
                  },
                  "encoding": {
                    "files": {
                      "style": "form"
                    }
                  }
                }
              }
            },

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2021
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2021
    Messages : 23
    Points : 56
    Points
    56
    Par défaut
    D'après la doc, tout semble correct.

    Pouvez-vous retenter l'opération avec le <Nom du paramètre> = "files" en miniscule dans le HTTPAjouteFichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HTTPAjouteFichier(sNomFormulaire, "files", sNomFichier)
    Dans le Content-Type de la requête, spécifiez ce qui est précisé en java à savoir : "application/octet-stream"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cMaRequete.ContentType = "application/octet-stream"

  12. #12
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 32
    Points
    32
    Par défaut
    ça n'a pas marché @arthurdnt

Discussions similaires

  1. [BI4] [BO XI] Gestion des utilisateurs avec l'API RESTful
    Par bjorge dans le forum Webi
    Réponses: 2
    Dernier message: 10/02/2014, 11h24
  2. Gestion des documents avec des mots cles pour la recherche
    Par padej450 dans le forum SharePoint
    Réponses: 1
    Dernier message: 07/05/2009, 17h11
  3. [Web Service] Tracer des zones avec l'API Google
    Par Cvbdev dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 21/03/2008, 11h20
  4. envoie des e_mail avec javamail
    Par anaaa dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 18/07/2007, 09h39
  5. Réponses: 26
    Dernier message: 15/10/2006, 17h13

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