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

API standards et tierces Java Discussion :

Recreer une pièce jointe avec JavaMail


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut Recreer une pièce jointe avec JavaMail
    Bonjour all,

    Je cherche à envoyer une pièce jointe à un webservice, grâce à un DataHandler. Pas de problème pour la partie cliente, qui ressemble à ça :
    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
     
    public class WebServiceJavaTestor {
     
    	public static void main(String[] args) {
    		WebServiceJavaProxy p = new WebServiceJavaProxy();
    		try {
    			String filename = "image.jpg";
    			DataSource ds = new FileDataSource("C:\\temp\\source\\" + filename);
    			DataHandler dh = new DataHandler(ds);
    			System.out.println("Call to storeFile :    " + p.storeFile(filename, dh));
     
    		} catch (RemoteException e) {
    			e.printStackTrace();
    		}
    	}
    }
    Par contre la partie serveur doit fonctionner sur un serveur Domino 6.5, ce qui inclue un certain nombre de difficultés :
    - java 1.3
    - il faut tout parser à la main.

    C'est donc ce que je fais. La requête que je reçoit ressemble à ça :
    ------=_Part_0_14158819.1148988787982
    Content-Type: text/xml; charset=UTF-8
    Content-Transfer-Encoding: binary
    Content-Id: <B16DC35C0EB5DB244E8FB115971AAB01>
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlnssd="http://www.w3.org/2001/XMLSchema" xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <storeFile xmlns="http://webservicejava">
    <filename>image.jpg</filename>
    <dh href="cid:E790332A5CC67910DE669D376D0DBF23" xsi:type="ns1ataHandler" xmlns:ns1="http://xml.apache.org/xml-soap"/>
    </storeFile>
    </soapenv:Body>
    </soapenv:Envelope>
    ------=_Part_0_14158819.1148988787982
    Content-Type:image/jpeg
    Content-Transfer-Encoding: binary
    Content-Id: <E790332A5CC67910DE669D376D0DBF23>
    Ï ÓJIF??? ?C?????? ???????????? $.\' \",#??(7),01444?
    ...
    ...
    ...
    ------=_Part_0_1
    Bon j'arrive bien à séparer les deux parties et à parser la première pour récupérer le nom du fichier et le content ID, ce qui me permet d'aller récupérer le contenu à proprement parler dans la seconde partie.

    Seulement mes essais pour recréer un DataHandler à partir du contenu ne fonctionnent que sur du texte, et pas sur des images ! Les images ainsi reçues (ou autre type de contenu un peu fun) ne sont pas exploitables.

    Je vous mets quelques exemples de mes tentatives :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String content = source.substring(begin, end).trim();
     
    // create the data handler from the content and the mime type
    DataSource dataSource = new ByteArrayDataSource(content, contentType);
    DataHandler dh = new DataHandler(dataSource);
     
    FileOutputStream fos = new FileOutputStream("C:\\temp\\image.jpg");
    dh.writeTo(fos);
    fos.close();
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // get a Session object
    Session session = Session.getInstance(new Properties(), null);
     
    // create a mime message for the attachment part
    byte[] sourceBytes = source.getBytes(); // todo : get the good charset
    ByteArrayInputStream inputStream = new ByteArrayInputStream(sourceBytes);
    MimeMessage msg = new MimeMessage(session, inputStream);
     
    FileOutputStream out = new FileOutputStream("C:\\temp\\image.jpg");
    msg.getDataHandler().writeTo(out);
    out.close();
    Bref, tout ça ne marche pas, malheuresement, et je suis bien en galère. Vous pourriez m'aider SVP ?

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    up please
    j'ai besoin d'aide SVP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    Bon il marche pas trop mon topic. J'ai découvert que ce qui ne va pas, c'est la réception de la requête par le serveur Domino : il remplace tous les caractères spéciaux par des points d'exclamation. Impossible de recréer une pièce jointe avec ça...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    Pour les gens qui seraient coincés comme moi dans cette situation, je leur conseille de changer d'approche : utiliser une servlet, exécutée par le moteur de servlet de Domino (attention, c'est pas du dernier cri). L'objet HttpServletResponse, passé en paramètre de doGet (ou doPost), permet de récupérer le contenu du message sans modification de l'encodage (sous forme de Stream du moins).

Discussions similaires

  1. envoyer une pièce jointe avec delphi xe2
    Par momedalhouma dans le forum Langage
    Réponses: 11
    Dernier message: 30/01/2012, 15h42
  2. Taille d'une pièce jointe avec MailMessage
    Par Borowsky dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/01/2009, 14h39
  3. Envoyer une pièce jointe avec mail
    Par oc_alex86 dans le forum Réseau
    Réponses: 1
    Dernier message: 15/01/2009, 23h21
  4. Récupérer une pièce jointe avec Lotus Notes
    Par Marty000 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 19/11/2007, 14h31
  5. Réponses: 2
    Dernier message: 06/12/2005, 11h53

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