如何将枚举值传递给wcf webservice
可以ksoap2传递一个枚举到webservice?
有一个wcf web服务:
[OperationContract]
string TestEnum(CodeType code);
CodeType是dotnet枚举:
public enum CodeType
{
[EnumMember]
ALL,
[EnumMember]
VehicleColor
}
我如何在Android客户端调用这个wcf webservice?
我创建一个枚举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 = ?;
}
}
谢谢你的帮助。
我刚刚通过元帅解决了枚举问题。
我创建了一个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-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”。
我希望这也能为你工作。
你有没有
[ServiceContract]
[ServiceKnownType(typeof(CodeType))]
public interface ITheService
{
[OperationContract]
string TestEnum(CodeType code);
}
和
[DataContract]
public enum CodeType
{
// ...
}
?
编辑:
一点搜索也出现了这个,这可能是有用的...
链接地址: http://www.djcxy.com/p/52247.html上一篇: How to pass an enum value to wcf webservice
下一篇: How to display a confirmation dialog(Primefaces) from backing bean