Utiliser un type de donnée personnalisé
Bonjour,
En suivant ce tutoriel je suis parevenu à consomer un WebService php5 avec Java ( non me )
Maintenant je voudrais passer autre chose qu'une chaine de caractères ou un simple type.
Je me suis crée un type personnalisé :
Code:
1 2 3 4 5 6 7 8
| <xsd:complexType name="Repport">
<xsd:all>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="summary" type="xsd:string"/>
<xsd:element name="author" type="xsd:string"/>
<xsd:element name="creation" type="xsd:timeinstant"/>
</xsd:all>
</xsd:complexType> |
Mais je ne trouve pas comment l'utiliser..
J'ai essayé ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
...
public class Repport implements Serializable {
public String description, summary, author;
public long time;
}
...
Repport repport = new Repport();
repport.description = "description";
repport.summary = "summary";
repport.author = "author";
repport.time = 00;
objet.addProperty("repport",repport); // objet est uen instance de SoapObject |
Mais je suis confronté à ce message :
Citation:
Exception in thread "main" java.lang.RuntimeException: Cannot serialize: test.webs$Repport@fa3ac1
at org.ksoap2.serialization.SoapSerializationEnvelope.writeProperty(Unknown Source)
at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(Unknown Source)
at org.ksoap2.serialization.SoapSerializationEnvelope.writeBody(Unknown Source)
at org.ksoap2.SoapEnvelope.write(Unknown Source)
at org.ksoap2.transport.Transport.createRequestData(Unknown Source)
at org.ksoap2.transport.HttpTransportSE.call(Unknown Source)
at test.webs.execute(webs.java:67)
at test.webs.main(webs.java:85)
Pouvez-vous m'aider ou me renseigner d'autres tutoriaux ?
Merci
ps: j'ai implementé Serializable dans Repport à cause de la pemière ligne de l'execption. Mais évidemment ça ne résoud rien.
Utiliser l'objet SoapObject
L'API ksoap2 prend en compte la sérialization des types complexes grâce à la classe SoapObject http://ksoap2.sourceforge.net/doc/ap...oapObject.html .
voici un exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
SoapObject person0 = new SoapObject("urn:string","Person");
// les paramètres ne servent pas à grand chose car ici on ne
//fera aucun appel de service sur person.
person0.addProperty("firstname","johann");
person0.addProperty("age","24");
person0.addProperty("gender","male");
connexionServeur = new HttpTransport( urlService );
connexionServeur.debug = true;
objetSOAPHello = new SoapObject(nomService, methodeChoisie );
objetSOAPHello .addProperty("Person",person0);
... |
le type complexe etant
Code:
1 2 3 4 5 6
|
<person>
<name/>
<age/>
<gender/>
</person> |