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 ga�� �@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.
Partager