Le forum (ô combien francophone) des utilisateurs de Powerbuilder.







Bonjour,
Après avoir réussi à générer un fichier XML avec PB et PBDOM, je dois ajouter le code ci dessous au début du fichier avant le Process Instruction du fichier, afin de pouvoir sauvegardé le fichier au format html et l'envoyer automatiquement avec un explorateur
<html>
<body onload="document.getElementById('shipForm').submit();">
<form enctype='multipart/form-data' action='https://service.ariba.com/service/transaction/cxml.asp' method='POST' ID='shipForm'>
<input type='hidden' name='cXML-urlencoded' value='<
et par conséquent, ajouter le code suivant à la fin du fichier
'> </form> </body> </html>
Le fichier XML est généré via pbdom avec les instructions
i_PBDOM_DOCUMENT.NewDocument ("", "", "cXML", "", as_nom_dtd)
et le process instruction est ajouté aussi avec pbdom
pbdom_PI = create PBDOM_ProcessingInstruction pbdom_PI.setname("xml") pbdom_PI.setvalue("version", "1.0") //pbdom_PI.setvalue("encoding", "utf-16le") pbdom_PI.setvalue("encoding", "utf-8") i_PBDOM_DOCUMENT_SHIP.addcontent(pbdom_PI)
La question est donc : quelle est la meilleure solution pour ajouter le début et la fin du fichier, avec pbdom ? ou avec filopen...... ou une autre solution ?
Merci d'avance,
Hors ligne
wazou1812 a écrit:
Bonjour,
[...]
La question est donc : quelle est la meilleure solution pour ajouter le début et la fin du fichier, avec pbdom ? ou avec filopen...... ou une autre solution ?
Merci d'avance,
Salut, une méthode alternative : ne pas créer de fichier, utiliser Interner Explorer par OLE, générer un document html en mémoire directement dans le composant IE et envoyer le tout ? Un peu comme dans la méthode N°4 décrite sur cette page de Real's Howto ? Il faut juste remplacer le contenu du document fabriqué à coup de WriteLn par le contenu de ton propre document (et je crois qu'il y a un bug dans l'exemple, le form ne s'appelle pas myform)

Hors ligne
bonjour,
tu peux utiliser l'objet Inet avec PostURL ?
Hors ligne







xlat a écrit:
bonjour,
tu peux utiliser l'objet Inet avec PostURL ?
Bonjour,
La méthode Post ne fonctionne pas avec du https ?
Hors ligne







seki a écrit:
wazou1812 a écrit:
Bonjour,
[...]
La question est donc : quelle est la meilleure solution pour ajouter le début et la fin du fichier, avec pbdom ? ou avec filopen...... ou une autre solution ?
Merci d'avance,Salut, une méthode alternative : ne pas créer de fichier, utiliser Interner Explorer par OLE, générer un document html en mémoire directement dans le composant IE et envoyer le tout ? Un peu comme dans la méthode N°4 décrite sur cette page de Real's Howto ? Il faut juste remplacer le contenu du document fabriqué à coup de WriteLn par le contenu de ton propre document (et je crois qu'il y a un bug dans l'exemple, le form ne s'appelle pas myform)
Cette solution me conviendrait, d'autant plus que je comptait l'envoyer avec l'OLE, mais le fichier xml est assez complexe, il a été généré auparavant (cf http://pbadonf.fr/forum/viewtopic.php?id=3312 ) , et je ne peux pas tout refaire ?
Merci de votre retour ?
Hors ligne
wazou1812 a écrit:
Bonjour,
La méthode Post ne fonctionne pas avec du https ?
effectivement, dans la doc je viens de lire :
pb115help a écrit:
Return value
...
-5 Unsupported secure (HTTPS) connection attempted
Hors ligne
wazou1812 a écrit:
seki a écrit:
Il faut juste remplacer le contenu du document fabriqué à coup de WriteLn par le contenu de ton propre document (et je crois qu'il y a un bug dans l'exemple, le form ne s'appelle pas myform)
Cette solution me conviendrait, d'autant plus que je comptait l'envoyer avec l'OLE, mais le fichier xml est assez complexe, il a été généré auparavant (cf http://pbadonf.fr/forum/viewtopic.php?id=3312 ) , et je ne peux pas tout refaire ?
Merci de votre retour ?
Pas sûr de comprendre...
Il n'y a pas trop de modifications à apporter : dans le code pbdom qui te sert à fabriquer le document cxml, à la fin au lieu de sauver dans un fichier j'utiliserais la méthode SaveDocumentIntoString( ) du PBDOM_DOCUMENT pour obtenir le code xml du document, puis je l'insérerais dans la value du champ caché du formulaire.
En gros dans l'exemple 4 du Real's Howto, tu vires le <input type="file"> et tu le remplaces par le <input type="hidden"> avec le code xml donné par SaveDocumentIntoString() en contenu de l'attribut "value".

Hors ligne







seki a écrit:
wazou1812 a écrit:
Bonjour,
[...]
La question est donc : quelle est la meilleure solution pour ajouter le début et la fin du fichier, avec pbdom ? ou avec filopen...... ou une autre solution ?
Merci d'avance,Salut, une méthode alternative : ne pas créer de fichier, utiliser Interner Explorer par OLE, générer un document html en mémoire directement dans le composant IE et envoyer le tout ? Un peu comme dans la méthode N°4 décrite sur cette page de Real's Howto ? Il faut juste remplacer le contenu du document fabriqué à coup de WriteLn par le contenu de ton propre document (et je crois qu'il y a un bug dans l'exemple, le form ne s'appelle pas myform)
Ha Ok, donc j'ai utilisé la méthode 4 qui me convient très bien, en adaptant le début avec mes besoins, mais pour envoyer le fichier, je dois l'envoyer avec un browser OLE ? ou il y a une commande avec l'OLE d'internet explorer utilisé dans l'exemple 4 ?
Merci d'avance,
Hors ligne
wazou1812 a écrit:
donc j'ai utilisé la méthode 4 qui me convient très bien, en adaptant le début avec mes besoins, mais pour envoyer le fichier, je dois l'envoyer avec un browser OLE ? ou il y a une commande avec l'OLE d'internet explorer utilisé dans l'exemple 4 ?
Merci d'avance,
Ça ne part tout seul avec la méthode go() dans la partie javascript du document (méfies toi dans l'exemple il me semble qu'il y a un bug sur le nommage du form : un coup c'est "document.myform" et ailleurs c'est "<FORM name='form'" ?
Sinon, tu peux aussi essayer d'ignorer la partie javascript et de piloter l'envoi en passant par IE.document.Forms("shipForm").Submit() si tu appelles toujours le formulaire shipForm.

Hors ligne







seki a écrit:
wazou1812 a écrit:
donc j'ai utilisé la méthode 4 qui me convient très bien, en adaptant le début avec mes besoins, mais pour envoyer le fichier, je dois l'envoyer avec un browser OLE ? ou il y a une commande avec l'OLE d'internet explorer utilisé dans l'exemple 4 ?
Merci d'avance,Ça ne part tout seul avec la méthode go() dans la partie javascript du document (méfies toi dans l'exemple il me semble qu'il y a un bug sur le nommage du form : un coup c'est "document.myform" et ailleurs c'est "<FORM name='form'" ?
Sinon, tu peux aussi essayer d'ignorer la partie javascript et de piloter l'envoi en passant par IE.document.Forms("shipForm").Submit() si tu appelles toujours le formulaire shipForm.
Bonjour,
Je ne suis pas une grande spécialiste du javascript, j'ai donc fait cela
IE.document.Open IE.document.WriteLn("<HTML>") IE.document.WriteLn("<BODY>") IE.document.WriteLn("<form name='shipForm' enctype='multipart/form-data' action='https://service.ariba.com/service/transaction/cxml.asp' method='POST' ID='shipForm'>") IE.document.WriteLn("<input type='hidden' name='cXML-urlencoded' value='") IE.document.WriteLn(i_PBDOM_DOCUMENT_SHIP.SaveDocumentIntoString()) IE.document.WriteLn("'></FORM>") IE.document.WriteLn("</BODY>") IE.document.WriteLn("</HTML>") IE.document.Close IE.document.Forms("shipForm").Submit()
Pour avoir l'équivalence de
<html>
<body onload="document.getElementById('shipForm').submit();">
<form enctype='multipart/form-data' action='https://service.ariba.com/service/transaction/cxml.asp' method='POST' ID='shipForm'>
<input type='hidden' name='cXML-urlencoded' value='<?xml version="1.0" encoding="utf-8"?>
L'instruction submit envoi bien quelque chose, la fenêtre d'internet explorer s'ouvre bien, le fichier se transfère, mais il doit y avoir une erreur dans la syntaxe, car le fichier n'arrive pas.
Peut être une idée ?
merci d'avance,
Hors ligne
wazou1812 a écrit:
...
L'instruction submit envoi bien quelque chose, la fenêtre d'internet explorer s'ouvre bien, le fichier se transfère, mais il doit y avoir une erreur dans la syntaxe, car le fichier n'arrive pas.
Peut être une idée ?
merci d'avance,
Il faut peut-être remplacer des caracteres avant de les mettres dans l'attribut value='...' (je pense déjà aux simples quotte) ?
sinon, ne pourrais tu pas faire une chose du genre :
IE.document.Open IE.document.WriteLn("<HTML>") IE.document.WriteLn("<BODY>") IE.document.WriteLn("<form name='shipForm' enctype='multipart/form-data' action='https://service.ariba.com/service/transaction/cxml.asp' method='POST' ID='shipForm'>") IE.document.WriteLn("<input type='hidden' name='cXML-urlencoded' value=''></FORM>") IE.document.WriteLn("</BODY>") IE.document.WriteLn("</HTML>") IE.document.Close IE.document.Forms("shipForm")['cXML-urlencoded'].value = i_PBDOM_DOCUMENT_SHIP.SaveDocumentIntoString() IE.document.Forms("shipForm").Submit()
comme cela, tu ne t'embête pas avec les remplacements de caractères.
Hors ligne







xlat a écrit:
wazou1812 a écrit:
...
L'instruction submit envoi bien quelque chose, la fenêtre d'internet explorer s'ouvre bien, le fichier se transfère, mais il doit y avoir une erreur dans la syntaxe, car le fichier n'arrive pas.
Peut être une idée ?
merci d'avance,Il faut peut-être remplacer des caracteres avant de les mettres dans l'attribut value='...' (je pense déjà aux simples quotte) ?
sinon, ne pourrais tu pas faire une chose du genre :Code: pb
IE.document.Open IE.document.WriteLn("<HTML>") IE.document.WriteLn("<BODY>") IE.document.WriteLn("<form name='shipForm' enctype='multipart/form-data' action='https://service.ariba.com/service/transaction/cxml.asp' method='POST' ID='shipForm'>") IE.document.WriteLn("<input type='hidden' name='cXML-urlencoded' value=''></FORM>") IE.document.WriteLn("</BODY>") IE.document.WriteLn("</HTML>") IE.document.Close IE.document.Forms("shipForm")['cXML-urlencoded'].value = i_PBDOM_DOCUMENT_SHIP.SaveDocumentIntoString() IE.document.Forms("shipForm").Submit()
comme cela, tu ne t'embête pas avec les remplacements de caractères.
en fin de compte c'est la syntaxe suivante qui fonctionne.
IE.document.Forms("shipForm").elements[0].value = i_PBDOM_DOCUMENT_SHIP.SaveDocumentIntoString()
Un grand merci pour ton aide toujours aussi précieuse,
Hors ligne