如何将枚举值传递给 wcf webservice

2023-11-26

ksoap2 可以将枚举传递给 web 服务吗?

有一个wcf网络服务:

[OperationContract]
string TestEnum(CodeType code);

CodeType 是 dotnet 枚举:

    public enum CodeType
    {
        [EnumMember]
        ALL,

        [EnumMember]
        VehicleColor
    }

我怎样才能在android客户端调用这个wcf web服务?

我创建了一个枚举 CodeType 并实现了 KvmSerializable。在方法 getPropertyInfo 中,info.name(info.type) 的值是多少?

public enum CodeType implements KvmSerializable, BaseInterface {
    ALL,

    VehicleColor;
//.......
    @Override
    public void getPropertyInfo(int index, Hashtable properties, PropertyInfo info) {
        //info.namespace = this.NameSpace;
        info.name = ?;
        info.type = ?;

    }
}

感谢您的帮助。


我刚刚通过 Marshal 解决了这个枚举问题。

我创建了一个“复制”.net 的 Java-Enum。然后我为它写了一个元帅级:

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-Values 的方法时:

//... blah blah
SoapSerializationEnvelope envelope =
                          new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.addMapping(SOAP_REMOTE_NAMESPACE, "MyEnum", MyEnum.class,       
                    MarshalEnum.getInstance());
//... and so on.

NoteSOAP_REMOTE_NAMESPACE 是要使用的枚举的数据协定命名空间!如果您不确定,请参阅 wsdl 文件来查找。 应该看起来像“http://schemas.datacontract.org/2009/08/Your.dotNet.Namespace”。

我希望这对你也有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将枚举值传递给 wcf webservice 的相关文章

随机推荐