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

Delphi Discussion :

Accès perso à un service web


Sujet :

Delphi

  1. #1
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut Accès perso à un service web
    Bonjour!

    J'utilise depuis un bout de temps un service web pour le téléchargement de fichiers. En gros mon appli se connecte au service web, appelle une fonction passant des paramètres et une structure comportant entre autre un tableau d'octets (TByteDynArray) m'est retourtée. Je transfère alors le tableau d'octets dans un fichier via un objet TFileStream et tout fonctionne parfaitement.

    Le problème est que cette méthode ne fonctionne pas depuis peu chez certains de mes clients. Après diagnostic, je sais que c'est l'accès au service web par Delphi qui fait défaut. J'ai testé avec une appli de test montée en VB.NET et ça fonctionne parfaitement sur les machines qui plantent avec mon appli Delphi. Sachez tout de suite que ma question n'est pas de savoir comment régler ce problème alors vous pouvez continuer à lire les petits amis .

    Après quelques tests, j'ai décidé de contourner le problème en construisant moi même un proxy qui se connecte au Service Web en question. C'est pas très compliqué : Un TidHTTP qui exécute un post avec mes paramètres et qui met la réponce dans un TXMLDocument. Je parcours les Nodes, cherche celle de mon tableau d'octets et jusque là tout fonctionne très bien.

    Mon problème (voilà j'y arrive!) est que mon tableau est stocké en format Base64 (c'est normal, c'est le principe même des services web que de sérialiser les objets pour que ça passe sur le port 80 sans faire crier les Firewalls). J'ai essayé de décoder le résultat de ma Node via une méthode que j'ai trouvé sur le net mais cette dernière me retourne plus d'octets qu'elle ne le devrait (19 091 312 contre 18 843 373 en mode normal) ce qui me fait comprendre que je fais peut-être quelque chose qu'il ne faudrait pas.

    Donc (enfin!) j'ai 3 questions :
    1. Quelqu'un sait comment THTTPRIO fait pour décoder le Base64 (question que je tente de l'imiter) ?
    2. Existe-t-il une méthode native à Delphi (INDY ou autre) qui peut m'aider à décoder du Base64 ? (c'est peut-être ma fonction trouvée sur le net qui fait défaut)
    3. Quelqu'un a une autre idée à me proposer ?


    Merci!!

  2. #2
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    J'ai trouvé!!

    La réponse HTTP ajoute des caractères #10 à l'intérieur de la chaîne base64. J'ai eu à les supprimer et tout est parfait maintenant.

    Merci quand même!!

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

Discussions similaires

  1. accès http à un service web
    Par salihovic dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/08/2009, 14h22
  2. Accès d'un service Web à partir de SAP BI
    Par Cléopatre1 dans le forum SAP
    Réponses: 1
    Dernier message: 08/01/2009, 21h23
  3. le chemin d'acces d'un service Web
    Par dachir dans le forum Services Web
    Réponses: 3
    Dernier message: 19/04/2008, 12h06
  4. [AccessControlException] pb d'acces à service web
    Par Stef784ever dans le forum Applets
    Réponses: 5
    Dernier message: 31/05/2007, 23h56
  5. [VB.NET] accès service web en tâche de fond
    Par olivier57b dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/09/2006, 16h02

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