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

SQL Oracle Discussion :

Envoi et récupération xml via url


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Envoi et récupération xml via url
    Bonjour,

    Je cherche à intégrer la technologie FIANET dans mes fonctions.

    Pour cela, je dois envoyer un flux xml à l'aide d'un url et on me renvoi un flux pour me dire si je n'ai pas d'erreurs.

    Voici 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
     
    CREATE OR REPLACE PROCEDURE p_envoifianet (
       p_codsoc   IN   NUMBER,
       p_siteid   IN   NUMBER                  -- identifiant de site pour FIA-NET
    )
    IS
       wa_xmldoc        CLOB;
       wa_url_envoi     CLOB;
       wa_xmlresponse   xmldom.domdocument;
       wa_xmltest		CLOB;
       wa_retval        VARCHAR2 (15);
       wa_deterror      VARCHAR2 (30);
       fichier_dbase    UTL_FILE.file_type;
       w_repertoire     VARCHAR2 (15);
       fic_dbase        VARCHAR2 (15);
       WebPageURL HttpUriType;
     
    BEGIN
       wa_xmldoc := f_generexmlfianet (p_codsoc, p_siteid);
     
       --url de test
    WebPageURL := HttpUriType.createUri('http://secure.fia-net.com/pprod/engine/stacking.cgi?siteid='
          || p_siteid
          || '&controllcallback='
          || wa_xmldoc);
     
     
     wa_xmltest:=WebPageURL.getCLOB();
     
       --On vérifie si FIA-NET a validé le format de notre flux XML
       IF xpath.TEST (wa_xmltest, 'validstack/result/@avancement="en cours"')
       THEN
          wa_retval := 'valide';
       ELSE
          wa_retval := 'error';
          wa_deterror :=
                       xpath.valueof (wa_xmlresponse, 'validstack/result/detail');
       END IF;
       xmldom.freedocument (wa_xmlresponse);
    EXCEPTION
       WHEN OTHERS
       THEN
          xmldom.freedocument (wa_xmlresponse);
    END;
    /
    Or cela ne fonctionne pas, lorsque je vais voir sur mon interface fianet, ils n'ont pas reçu mon flux.

    Ma fonction "f_generexmlfianet" me renvoie bien un CLOB (car chaine de caractères trop petit) et je l'ai testé, elle fonctionne.

    Apparemment, le souci vient lorsque j'effectue le "wa_xmltest:=WebPageURL.getCLOB();"

    Après je ne sais pas si j'utilise vraiment la bonne méthode.

    Si quelqu'un a déjà envoyé des flux xml en utilisant cette méthode ou intégré fianet,....

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Bon j'ai refait quelques essais et j'ai trouvé une autre fonction j'utilise "xml_http.get".

    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
     
    CREATE OR REPLACE PROCEDURE p_envoifianet (
       p_codsoc   IN   NUMBER,
       p_siteid   IN   NUMBER                  -- identifiant de site pour FIA-NET
    )
    IS
       wa_xmldoc        CLOB;
       wa_url_envoi     CLOB;
       wa_xmlresponse   xmldom.domdocument;
       wa_xmltest       xmltype;
       wa_retval        VARCHAR2 (15);
       wa_deterror      VARCHAR2 (30);
       fichier_dbase    UTL_FILE.file_type;
       w_repertoire     VARCHAR2 (15);
       fic_dbase        VARCHAR2 (15);
     
    BEGIN
       wa_xmldoc := f_generexmlfianet (p_codsoc, p_siteid);
     
         wa_url_envoi :='http://secure.fia-net.com/pprod/engine/stacking.cgi?siteid='|| p_siteid|| '&controllcallback='|| wa_xmldoc;
     
       --On récupère le flux xml de validation de format
        xml_http.get (wa_url_envoi, wa_xmlresponse);
     
       --On vérifie si FIA-NET a validé le format de notre flux XML
       IF xpath.TEST (wa_xmlresponse, 'validstack/result/@avancement="en cours"')
       THEN
          wa_retval := 'valide';
       ELSE
          wa_retval := 'error';
          wa_deterror :=
                       xpath.valueof (wa_xmlresponse, 'validstack/result/detail');
       END IF;
     
       xmldom.freedocument (wa_xmlresponse);
    EXCEPTION
       WHEN OTHERS
       THEN
          xmldom.freedocument (wa_xmlresponse);
    END;
    /
    Malheureusement mon "xml_http.get" ne s'exécute pas et à mon avis c'est parce que mon url est au format CLOB et non VARCHAR2. Mais je suis obligé car le VARCHAR2 ne peut contenir que 32767 caractères. Or mon url va être beaucoup plus long que ça....

Discussions similaires

  1. ligne xml via url
    Par yochima dans le forum C#
    Réponses: 5
    Dernier message: 18/08/2009, 10h37
  2. envoie de flux XML via Servlet
    Par Halloula dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 19/03/2009, 13h27
  3. envoie de xml via http
    Par ricault dans le forum Services Web
    Réponses: 1
    Dernier message: 17/11/2007, 22h44
  4. Récupération de l'url d'envoi.
    Par meliandah dans le forum Langage
    Réponses: 1
    Dernier message: 16/05/2007, 20h07
  5. Récupération/envoie de flux video via IP
    Par innosang dans le forum C++
    Réponses: 4
    Dernier message: 22/02/2007, 09h40

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