Bonjour,

Alors voila le problème. j'espère que vous trouverez une solution parce là j'ai plus de cheveux ...

J'ai crée mon stub à partir de mon wsdl avec wsdl2java, jusque la tout va bien.

A l'intérieur, j'ai une methode create document qui prend en entrée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<complexType name="CreateDocumentType">
   <sequence>
     <element name="documentTypeID" type="xsd:string" minOccurs="1" maxOccurs="1" nillable="false"/>
     <element name="contentType" type="xsd:string" minOccurs="1" maxOccurs="1" nillable="false"/>
     <element name="controlFlag" type="strs:ControlFlagEnumType" minOccurs="1" maxOccurs="1"/>
     <element name="doc" type="strs:Document" minOccurs="1" maxOccurs="1"/>
   </sequence>
  </complexType>
le type strsocument reference un type include
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<complexType name="Document">
   <sequence>
     <element ref="xop:Include" minOccurs="1" maxOccurs="1"/>
   </sequence>
     <attribute ref="xmime:contentType" use="optional"/>
  </complexType>
J'utilise axis 2 et MTOM pour appeler ma méthode create document.
le truc c'est que je n'arrive pas à instantier mon include avec mon datahandler


Comme je veux faire un outils qui appelle n'importe quel service web je marche par invocation:

Ici j'essaye de créer mon include :

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
36
OMFactory fact = OMAbstractFactory.getOMFactory();
	    	OMElement imageElement = fact.createOMElement("toto", null);
 
	    	DataHandler dh;
	    	if (value instanceof byte[]) 
	    	{
				byte[] arrayValue = (byte[]) value;
				dh = new DataHandler(new PNGDataSource(arrayValue));
			}
	    	else if (value instanceof Image) 
	    	{
	    		 dh = new DataHandler(new PNGDataSource(((Image)value).getContent()));
	    	}
	    	else
	    	{
	    		 dh = new DataHandler(new PNGDataSource(((FileAttachment)value).getContent()));
	    	}
 
	        //create an OMText node with the above DataHandler and set optimized to true
	        OMText textData = fact.createOMText(dh, false);
	        textData.setOptimize(true);
 
	        imageElement.addChild(textData);
	        try 
	        {
				Object inc = cl.newInstance();
				//Method m = cl.getMethod("addExtraElement", new Class[]{OMElement.class});
				//m.invoke(inc, new Object[]{imageElement});
				Method m2 = cl.getMethod("setHref", new Class[]{URI.class});
				m2.invoke(inc, new Object[]{new URI("cid:toto")});
				return inc;
			}
	        catch (Exception e)
			{
				e.printStackTrace();
			}
Et voilà le résultat :
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
 
POST / HTTP/1.1
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_C618F25B274E38B1481188985744320; type="application/xop+xml"; start="<0.urn:uuid:C618F25B274E38B1481188985744321@apache.org>"; start-info="application/soap+xml"; charset=UTF-8; action="http://schemas.streamserve.com/webservice/repositorydocument/1.0/createdocument"
User-Agent: Axis2
Host: 127.0.0.1:27170
Transfer-Encoding: chunked
 
8bb
--MIMEBoundaryurn_uuid_C618F25B274E38B1481188985744320
Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml"
Content-Transfer-Encoding: binary
Content-ID: <0.urn:uuid:C618F25B274E38B1481188985744321@apache.org>
 
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header><ns2:messageHeader xmlns:ns2="http://schemas.streamserve.com/messageheader/1.0"><to>http://schemas.streamserve.com/webservice/repositorydocument/strsrepositorydocumentservice/1.0</to><action>deleteDocument</action></ns2:messageHeader></soapenv:Header><soapenv:Body><ns3:createDocument xmlns:ns3="http://schemas.streamserve.com/webservice/repositorydocument/strsrepositorydocumentservice/1.0"><createDocumentReq><documentTypeID>6555D54C89E140EDA551ED003C57905D</documentTypeID><contentType>application/octet-stream</contentType><controlFlag>Normal</controlFlag><doc><Include xmlns="http://www.w3.org/2004/08/xop/include" href="toto"><toto xmlns="">aGVsbG8gd29ybGQhIQ==</toto>
--MIMEBoundaryurn_uuid_C618F25B274E38B1481188985744320----MIMEBoundaryurn_uuid_C618F25B274E38B1481188985744320
Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml"
Content-Transfer-Encoding: binary
Content-ID: <0.urn:uuid:C618F25B274E38B1481188985744321@apache.org>
 
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header><ns2:messageHeader xmlns:ns2="http://schemas.streamserve.com/messageheader/1.0"><to>http://schemas.streamserve.com/webservice/repositorydocument/strsrepositorydocumentservice/1.0</to><action>deleteDocument</action></ns2:messageHeader></soapenv:Header><soapenv:Body><ns3:createDocument xmlns:ns3="http://schemas.streamserve.com/webservice/repositorydocument/strsrepositorydocumentservice/1.0"><createDocumentReq><documentTypeID>6555D54C89E140EDA551ED003C57905D</documentTypeID><contentType>application/octet-stream</contentType><controlFlag>Normal</controlFlag><doc><Include xmlns="http://www.w3.org/2004/08/xop/include" href="toto"><toto xmlns="">aGVsbG8gd29ybGQhIQ==</toto></Include></doc></createDocumentReq></ns3:createDocument></soapenv:Body></soapenv:Envelope>
3a
 
--MIMEBoundaryurn_uuid_C618F25B274E38B1481188985744320--
0
alors qu'il me faudrait :

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
POST / HTTP/1.1
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_C618F25B274E38B1481188984689606; type="application/xop+xml"; start="<0.urn:uuid:C618F25B274E38B1481188984689607@apache.org>"; start-info="application/soap+xml"; charset=UTF-8; action="http://schemas.streamserve.com/webservice/repositorydocument/1.0/createdocument"
User-Agent: Axis2
Host: 127.0.0.1:27170
Transfer-Encoding: chunked
 
558
--MIMEBoundaryurn_uuid_C618F25B274E38B1481188984689606
Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml"
Content-Transfer-Encoding: binary
Content-ID: <0.urn:uuid:C618F25B274E38B1481188984689607@apache.org>
 
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header><ns2:messageHeader xmlns:ns2="http://schemas.streamserve.com/messageheader/1.0"><to>http://schemas.streamserve.com/webservice/repositorydocument/strsrepositorydocumentservice/1.0</to><action>deleteDocument</action></ns2:messageHeader></soapenv:Header><soapenv:Body><ns3:createDocument xmlns:ns3="http://schemas.streamserve.com/webservice/repositorydocument/strsrepositorydocumentservice/1.0"><createDocumentReq><documentTypeID>6555D54C89E140EDA551ED003C57905D</documentTypeID><contentType>application/octet-stream</contentType><controlFlag>Normal</controlFlag><doc><Include xmlns="http://www.w3.org/2004/08/xop/include" href="cid:toto"></Include></doc></createDocumentReq></ns3:createDocument></soapenv:Body></soapenv:Envelope>
--MIMEBoundaryurn_uuid_C618F25B274E38B1481188984689606
Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml"
Content-Transfer-Encoding: binary
Content-ID: <toto>
 
aGVsbG8gd29ybGQhIQ==
--MIMEBoundaryurn_uuid_C618F25B274E38B1481188984689606--
0
j'espère avoir été assez clair.
Pour résumer, je ne sais pas comment faire pour mettre mon document dans le include afin d'avoir mon document en piece jointe comme le fait normalement MTOm avec le multipart et non dans mon enveloppement soap comme il le fait en ce moment.

merci d'avance, je suis la pour plus de renseignement si vous avez besoin, en attendant je vais continuer ma brasse couler dans les profondeurs de soap