Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'utilise pb10.5 avec appel de webservice. Dans ces appels,
je dois passer un fichier Word en Blob après l'avoir encoder en
base64. Comme on veut avoir la main sur le code, il faut
créer la méthode permettant d'encoder le fichier.
Est-ce que quelqu'un peut m'aider ?
Merci
Hors ligne
ossarc a écrit:
Bonjour,
J'utilise pb10.5 avec appel de webservice. Dans ces appels,
je dois passer un fichier Word en Blob après l'avoir encoder en
base64. Comme on veut avoir la main sur le code, il faut
créer la méthode permettant d'encoder le fichier.
Est-ce que quelqu'un peut m'aider ?
Merci
HS
T'arrive tout droit d'un autre forum toi non ?
Hors ligne
Bonjour,
tu as la possibilité d'utiliser des fonctions du SGBDR
* Oracle : UTL_ENCODE.Base64_Encode et UTL_ENCODE.Base64_Decode
* Sybase : BASE64_ENCODE et BASE64_DECODE
...
ou alors celles de l'objet n_winsock : of_decode et of_encode
Hors ligne
thezerg a écrit:
HS
T'arrive tout droit d'un autre forum toi non ?
developpez.net ?
Moi aussi j'en viens.
pick Ouic avait répondu http://www.rgagnon.com/pbdetails/pb-0258.html
et Ossarc : "J'ai déjà eu cette page mais je ne sais pas comment m'en servir"
Le principe est pourtant assez simple : Microsoft fourni des services de cryptographie dans Windows.
La dll crypt32.dll permet, entre autres, l'encodage et le décodage en base 64.
Crée un objet non visuel, coche autoinstantiate (facultatif, mais pas plus mal)
Dans "local external function" fait un copier-coller du script [local function declaration] de Real Gagnon
Dans "instance variables" fait un copier-coller du script [instance variables] de Real Gagnon (tiens cette phrase me rappelle quelque chose)
Ensuite tu crée deux fonctions correspondant aux deux scripts suivants. A ce stade tu dois maitriser le copier-coller
eRasorZ : les deux fonctions dont tu parle dans n_winsock encodent en base64 ?
(peux pas vérifier moi-même, impossible de télécharger le moindre zip)
Hors ligne
Bonjour,
je sais que ces fonctions existent, j'ai su les employer. Le problème est
qu'il faut que je créé le code d'encodage car on veut avoir la main sur le code .
Voilà mon pb
Hors ligne
Je comprends ton souci de ne pas dépendre de librairies extérieures. L'éditeur pourrait faire faillite ou abandonner son produit.
Maintenant, évalue les probas que :
1-M$ fasse faiilite
2-M$ cesse de vendre des systèmes d'exploitation
3-M$ supprime crypt32.dll d'une prochaine version de Windows
Dans les deux premiers cas, tu aurai un souci autrement plus grave, puisque plus de powerbuilder.
Quand au troisième, songe au nombre de programmes qui cesseraient de fonctionner.
Celà dit, si les fonctions dont parle eRasorz sont en pur powerscript cela résoud ton problème
Sinon, tu trouveras l'algorithme ici : http://base64.sourceforge.net/
Et il ne te restera plus qu'à traduire
PS : C'est carrément HS, mais sur mon 3° point je vous invite à lire ceci : Why not just block the apps that rely on undocumented behavior ? par Raymond Chen.
Dernière modification par shahin (17-08-2007 09:17:49)
Hors ligne
shahin a écrit:
pick Ouic avait répondu http://www.rgagnon.com/pbdetails/pb-0258.htmlet Ossarc : "J'ai déjà eu cette page mais je ne sais pas comment m'en servir"
Le principe est pourtant assez simple : Microsoft fourni des services de cryptographie dans Windows.
La dll crypt32.dll permet, entre autres, l'encodage et le décodage en base 64.
Crée un objet non visuel, coche autoinstantiate (facultatif, mais pas plus mal)
Dans "local external function" fait un copier-coller du script [local function declaration] de Real Gagnon
Dans "instance variables" fait un copier-coller du script [instance variables] de Real Gagnon (tiens cette phrase me rappelle quelque chose)
Ensuite tu crée deux fonctions correspondant aux deux scripts suivants. A ce stade tu dois maitriser le copier-coller
eRasorZ : les deux fonctions dont tu parle dans n_winsock encodent en base64 ?
(peux pas vérifier moi-même, impossible de télécharger le moindre zip)
Pick Ouic avait donné le lien de rgagnon, mais ça ne fonctionne que sous windows Xp ou Vista..
Moi de même, je dois encoder/décoder une chaine de caractères en Base64 sous PB 10.5.1 mais je travaille sous Windows 2000, donc impossible d'utiliser la méthode décrite dans le lien. La library Crypt32.dll de Windows 2000 ne contient pas les 2 fonctions utilisées pour encoder/décoder en Base64 (CryptBinaryToString et CryptStringToBinary)
eRaSorZ a écrit:
Bonjour,
tu as la possibilité d'utiliser des fonctions du SGBDR
* Oracle : UTL_ENCODE.Base64_Encode et UTL_ENCODE.Base64_Decode
* Sybase : BASE64_ENCODE et BASE64_DECODE
...
ou alors celles de l'objet n_winsock : of_decode et of_encode
Idem, les fonctions of_decode et of_encode de l'objet n_winsock reprennent le script du lien de pick ouic, et donc nécessite au moins Windows XP..
Avez-vous une idée d'où récupérer une Dll ou un autre moyen pour pouvoir encore/decode en base64 ?
Merci
Kalini
Dernière modification par Kalini (31-08-2007 10:09:29)
Hors ligne
Bonjour, as-tu essayé via SGBDR :
eRaSorZ a écrit:
tu as la possibilité d'utiliser des fonctions du SGBDR
* Oracle : UTL_ENCODE.Base64_Encode et UTL_ENCODE.Base64_Decode
* Sybase : BASE64_ENCODE et BASE64_DECODE
...
Hors ligne
eRaSorZ a écrit:
Bonjour, as-tu essayé via SGBDR :
eRaSorZ a écrit:
tu as la possibilité d'utiliser des fonctions du SGBDR
* Oracle : UTL_ENCODE.Base64_Encode et UTL_ENCODE.Base64_Decode
* Sybase : BASE64_ENCODE et BASE64_DECODE
...
Salut,
Non, je n'ai pas essayé car au moment où je veux Encoder/Decoder la chaine de caractère, je ne suis pas encore connecter à la base oracle.. J'ai besoin d'encoder/décoder avant la chaine de caractère. C'est en rapport avec le mot de passe et la clé de cryptage..
SInon, sur ce lien là, http://pbdj.sys-con.com/read/42522.htm , ils parlent du fichier Pbsecurity.zip à récupérer. Ce fichier contient la PBL securityclient.pbl et pourrait peut-être m'aider..
Savez-vous où je pourrais trouver le PBsecurity.zip à télécharger ?
Sur ce lien, ils disent que je peux le trouver sur ce même site Powerbuilder Developper Journal, mais pas moyen de trouver ..
Kalini
Dernière modification par Kalini (31-08-2007 10:33:11)
Hors ligne
shahin a écrit:
Sinon, tu trouveras l'algorithme ici : http://base64.sourceforge.net/
Et il ne te restera plus qu'à traduire
Je reconnais que traduire l'opérateur C ">>" en powerbuilder c'est pas forcément évident
Quand au "&" (et binaire) c'est pas mieux
AMHA, le plus simple est de modifier le fichier C en question pour en faire une dll.
Je modifierai aussi les fonctions encode et decode pour qu'elles puissent travailler directement sur des chaines de caractères, et non pas sur des descripteurs de fichiers
Il y a plus de tests que de développement.
Si tu as besoin d'un compilateur C gratuit, je te conseille lcc-win32
Kalini a écrit:
Sinon, sur ce lien là, http://pbdj.sys-con.com/read/42522.htm , ils parlent du fichier Pbsecurity.zip à récupérer. Ce fichier contient la PBL securityclient.pbl et pourrait peut-être m'aider...
Attention, c'est un "EJB client" : il faut EAS pour le faire tourner.
Tout est basé la dessus (java pur et dur) : http://iharder.sourceforge.net/current/java/base64/
Kalini a écrit:
mais pas moyen de trouver ..
Toi non plus ? Ouf, je me sens moins seul. Bon, le journal est payant.
Dernière modification par shahin (31-08-2007 10:49:00)
Hors ligne
shahin a écrit:
shahin a écrit:
Sinon, tu trouveras l'algorithme ici : http://base64.sourceforge.net/
Et il ne te restera plus qu'à traduireJe reconnais que traduire l'opérateur C ">>" en powerbuilder c'est pas forcément évident
Quand au "&" (et binaire) c'est pas mieux
AMHA, le plus simple est de modifier le fichier C en question pour en faire une dll.
Je modifierai aussi les fonctions encode et decode pour qu'elles puissent travailler directement sur des chaines de caractères, et non pas sur des descripteurs de fichiers
Il y a plus de tests que de développement.
Si tu as besoin d'un compilateur C gratuit, je te conseille lcc-win32Kalini a écrit:
Sinon, sur ce lien là, http://pbdj.sys-con.com/read/42522.htm , ils parlent du fichier Pbsecurity.zip à récupérer. Ce fichier contient la PBL securityclient.pbl et pourrait peut-être m'aider...
Attention, c'est un "EJB client" : il faut EAS pour le faire tourner.
Tout est basé la dessus (java pur et dur) : http://iharder.sourceforge.net/current/java/base64/Kalini a écrit:
mais pas moyen de trouver ..
Toi non plus ? Ouf, je me sens moins seul. Bon, le journal est payant.
OK, merci shahin pour cette réponse..
Je vais voir avec l'algo alors..
Hors ligne
shahin a écrit:
shahin a écrit:
Sinon, tu trouveras l'algorithme ici : http://base64.sourceforge.net/
Et il ne te restera plus qu'à traduireJe reconnais que traduire l'opérateur C ">>" en powerbuilder c'est pas forcément évident
Quand au "&" (et binaire) c'est pas mieux
AMHA, le plus simple est de modifier le fichier C en question pour en faire une dll.
Je modifierai aussi les fonctions encode et decode pour qu'elles puissent travailler directement sur des chaines de caractères, et non pas sur des descripteurs de fichiers
Il y a plus de tests que de développement.
Si tu as besoin d'un compilateur C gratuit, je te conseille lcc-win32
C'est clair, je comprends même pas ces fonctions ">>", "<<" et "&" ... J'ai pourtant jeté un oeil ici:
http://www.commentcamarche.net/c/cop.php3
ça ne va pas être simple de transcrire en PB, ça..
Dernière modification par Kalini (31-08-2007 11:43:26)
Hors ligne
Bon, j'ai préféré créer la DLL à partir de l'algo C donné + haut.
ça a l'air OK, je retrouve bien les fonctions.
Seulement, effectivement, comme tu le disais, cet algo est fait pour encoder un fichier.
Il faut modifier pour n'encoder qu'une chaine de caractères..
Dernière modification par Kalini (31-08-2007 12:32:34)
Hors ligne