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 :
Par contre la partie serveur doit fonctionner sur un serveur Domino 6.5, ce qui inclue un certain nombre de difficultés :
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(); } } }
- 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 :
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.------=_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
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 :
ou encore :
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();
Bref, tout ça ne marche pas, malheuresement, et je suis bien en galère. Vous pourriez m'aider SVP ?
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();
Merci
Partager