gpt4 book ai didi

android - 如何将枚举值传递给 wcf webservice

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:43 25 4
gpt4 key购买 nike

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。然后我为它写了一个 Marshal-Class:

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.

注意 SOAP_REMOTE_NAMESPACE 是要使用的枚举的数据协定命名空间!如果您不确定,请参阅 wsdl 文件以找出它。应该类似于“http://schemas.datacontract.org/2009/08/Your.dotNet.Namespace”。

我希望这对你也有用。

关于android - 如何将枚举值传递给 wcf webservice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com