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

Format d'échange (XML, JSON...) Java Discussion :

Création de message SOAP avec pièce jointe JPG


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Création de message SOAP avec pièce jointe JPG
    Bonjour,

    Je cherche à envoyer un message SOAP à une API qui récupère l'image (.JPG) attachée au message et me renvoie une réponse XLM.
    J'ai néanmoins un problème, lorsque je crée mon message, la pièce jointe est bien présente ( soapMessage.countAttachments() = 1) et elle est bien affichée en binaire dans la console mais j'ai l'impression qu'elle n'est pas récupérée par l'API (qui m'envoie une Erreur).

    Voici la création de mon message en suivant le protocole SOAP:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    SOAPMessage message = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage();
            SOAPPart soapPart = message.getSOAPPart();
            message.getSOAPPart().getEnvelope().setPrefix("soap");
            message.getSOAPPart().getEnvelope().removeNamespaceDeclaration("env");
            message.getSOAPHeader().setPrefix("soap");
            message.getSOAPBody().setPrefix("soap");
     
     SOAPEnvelope envelope = soapPart.getEnvelope();
            envelope.addNamespaceDeclaration("mes", "http://...");
            envelope.addNamespaceDeclaration("xop", "http://...");
     
    SOAPBody body = message.getSOAPBody();
    SOAPElement nomRequete = body.addChildElement("NomRequete", "mes");
    SOAPElement image = nomRequete.addChildElement("image");
     
    SOAPElement imagejpg = image.addChildElement("image");
            SOAPElement imagexop = imagejpg.addChildElement("Include","xop");
            Name hrefAttName = soapFactory.createName("href");
            imagexop.addAttribute(hrefAttName,"image.jpg");
     
    //Creation de la pièce jointe
     
    URL url = new URL("file:///C:/Users/.../image.jpg");
            DataHandler dataHandler = new DataHandler(url);
            AttachmentPart att = message.createAttachmentPart(dataHandler);
            att.setContentId(image.jpg);
            message.addAttachmentPart(att);
     
    message.saveChanges();
     
    //Appel API
     
    URL endpoint =
                new URL("https://adresse_api?wsdl");
            SOAPMessage response = connection.call(message, endpoint);

    Affichage de la requête:

    Request SOAP Message =
    ------=_Part_1_706197430.1461574965962
    Content-Type: application/soap+xml; charset=utf-8

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:mes="http://..." xmlnsop="http://www.w3.org/2004/08/xop/include">
    <soap:Header/>
    <soap:Body>
    <mes:NomRequete>
    <image>
    <image>
    <xop:Include href="image.jpg"/>
    </image>
    </image>
    </mes:NomRequete>
    </soap:Body>
    </soap:Envelope>

    ------=_Part_1_706197430.1461574965962
    Content-Type: image/jpeg
    Content-ID: image.jpg
    Content-Location: file:///C:/.../image.jpg

    (FLUX BINAIRE CORRESPONDANT A L'IMAGE)

    ���� JFIF  H H ��tExif MM *     �   ,   �   �       �   �(    1  �2   �    �i   � Bsamsung SM-P600 H  H P600XXUDOJ3 2016:04:08 14:32:04 ��   4��   <�"    �'   P �  0220�   D�   X�
     l�   t�
     |�
     ��   ��    �   �
      ��|  b ���   ��  0100�    �   ��   ,�   �   �   �   �   �  4� ����  ! 
    2016:04:08 14:32:04 2016:04:08 14:32:04 � d � d - d
    � d "
        0100         Z @   P         R98   0100 E08LSHD02OF    �   h           �   �(       �   � H  H ���� C  
    2!!22222222222222222222222222222222222222222222222222��  g �! ��   
    �� �  } !1AQa"q2���#B��R��$3br�
    %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������   
    �� �  w !1AQaq"2�B���� #3R�br�
    �֧�MRK�k���N= �ҭ�� 7-�ͷ �N_�j��fO�_Z�6�&?���L�o��$�t;��6f�V�� �y��#�G�!=Q�wX�P��'�
    ��۱#Ό63�åf�Ɖ�i
    $���2��A����2��� G_�?���Մ����$ �d�=F�Y5��.�B�=3� �d�O
    ^I��:nv g񨆡a� �…�@w ���Q��!�{j�twP�?/�QV���(��H�oR�$}h.(����K�̌�)��s�9�=i``����S��0=Jc��u>j���$�
    [Ca��-�5��e
    ------=_Part_1_706197430.1461574965962--



    L'API renvoie un message d'erreur comme si l'image n'était pas jointe. Il y a peut-être une erreur de logique ou de syntaxe dans mon code.
    Merci pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    je ne connais pas trop la technique que tu utilises ici (du SOAP en multipart, sérieusement ?)
    Mais je sais que les URL qui référencent un contenu inclus dans le multipart en cours doivent utiliser le schéma cid:

    Donc en principe ce devrait être <xop:Include href="cid:image.jpg"/>.

    Cette remarque étant faite, je n'ai pas testé la technique elle-même, il peut y avoir plein de trucs qui ne vont pas. Mais ça expliquerait qu'il ne trouve pas l'attachement, puisque l'URL ne donnait pas assez d'information pour le trouver.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Web Service] Envoyer une trame XML SOAP avec pièces jointes
    Par Khamsin dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/08/2011, 11h30
  2. Message SOAP avec piece jointe
    Par jonestar dans le forum Services Web
    Réponses: 1
    Dernier message: 12/05/2010, 17h08
  3. [PHP 5.1] E-mail avec pièce jointe mais sans message
    Par olikhvar dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2010, 10h22
  4. Problème avec pièce jointe .jpg
    Par javelot69 dans le forum Outlook Express / Windows Mail
    Réponses: 14
    Dernier message: 25/10/2007, 13h55

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