Я только что решил эту проблему enum через Marshal.
Я создал Java-Enum, «копирующий» .net.Затем я написал для него класс маршала:
public class MarshalEnum implements org.ksoap2.serialization.Marshal
{
... // Singleton-Pattern
public Object readInstance(XmlPullParser xpp, String string, String string1,
PropertyInfo pi)
throws IOException, XmlPullParserException
{
return MyEnum.valueOf( xpp.nextText() );
}
public void writeInstance(XmlSerializer xs, Object o)
throws IOException
{
xs.text(((MyEnum)o).name());
}
public void register(SoapSerializationEnvelope sse)
{
sse.addMapping(sse.xsd, "MyEnum", MyEnum.class, MarshalEnum.getInstance() );
}
} // class
Затем при вызове метода, в который должны быть отправлены значения MyEnum:
//... blah blah
SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.addMapping(SOAP_REMOTE_NAMESPACE, "MyEnum", MyEnum.class,
MarshalEnum.getInstance());
//... and so on.
Примечание SOAP_REMOTE_NAMESPACE - это пространство имен контракта данных используемого перечисления!Посмотрите wsdl-файл, чтобы узнать это, если вы не уверены.Должно выглядеть примерно так: "http://schemas.datacontract.org/2009/08/Your.dotNet.Namespace".
Надеюсь, это сработает и для вас.