私はこのWebサービスを持っています:
<message name="getListOB3Request">
<part name="user" type="xsd:string"/>
<part name="pass" type="xsd:string"/>
<part name="server" type="xsd:string"/>
<part name="tableName" type="xsd:string"/>
<part name="fields" type="tns:ArrayOfFieldOB"/>
<part name="sql" type="xsd:string"/>
</message>
FieldOB の配列は次のとおりです。
<xsd:complexType name="ArrayOfFieldOB">
<xsd:complexContent>
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="FieldOB[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
FieldOB は次のとおりです。
<xsd:complexType name="FieldOB">
<xsd:all>
<xsd:element name="St_field" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
kvmSerializable を実装する OBField クラスがあります
public class OBField implements Serializable, KvmSerializable
{
...
}
および kvmSerializable を実装する ArrayOBField クラス
public class OBArrayListSerializable extends ArrayList<OBField> implements Serializable, KvmSerializable
{
....
public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo propertyInfo)
{
// TODO Auto-generated method stub
switch (index)
{
case 0:
{
propertyInfo.name = "ArrayOfFieldOB";
propertyInfo.type = new OBField().getClass();
break;
}
}
}
}
Web サービス呼び出し:
envelope.addMapping(NAMESPACE, "fields", new OBArrayListSerializable().getClass());
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL_GENERAL+url);
try
{
androidHttpTransport.call(SOAP_ACTION_GENERAL+metodo, envelope);
SoapObject response (SoapObject)envelope.bodyIn;
}
これは私のリクエストです (envelope.bodyOut)
getListOB3{user=myUser; pass=myPass;
server=http://localhost/test;
tableName=BusinessPartner;
fields=[com.androidTest.ws.OBField@44e8c988, com.androidTest.ws.OBField@44e8ca20];
sql=; }
問題は、OBField の配列である「フィールド」にあります。
Web サービスが「フィールド」を正しく受信していないようです
ありがとう