Cómo pasar un valor enum a wcf webservice
Ksoap2 puede pasar un enum a webservice?
Hay un wcf webservice:
- Cómo consumir servicios WCF dependientes de la sesión usando Ksoap2-Android
- Pasar objetos al servicio de jabón wcf desde android usando ksoap2; Envía y recibe 0
- ¿Cuál es la forma correcta de auto-hospedar una API Web?
- Diferentes formas de publicar valores json en Server
- Tener problemas para conectarse al servicio wcf en localhost desde el emulador de Android
[OperationContract] string TestEnum(CodeType code);
CodeType es dotum enum:
public enum CodeType { [EnumMember] ALL, [EnumMember] VehicleColor }
¿Cómo puedo llamar a este wcf webservice en el cliente android?
Creo un enum CodeType y implementa KvmSerializable. En el método getPropertyInfo, ¿cuál es el valor de 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 = ?; } }
Gracias por tu ayuda.
- Xamarin Android - Hacer una petición de descanso con un parámetro complejo (objeto) lanza excepción, en .NET funciona bien (Usando fábrica de canales)
- Android - Https conexión a un servicio WCF de .NET da SSLException: "Ningún certificado de compañero"
- Llame a la variable de tipo de referencia WCF
- Publicar un servicio JSONArray en WCF desde android
- Cómo llamar a un servicio WCF usando ksoap2 en android?
- Error de acceso denegado con jQuery
- Envío de una solicitud JSON HTTP POST desde Android
- Saltos de línea con WCF, JSON y un cliente que no sea Windows
Acabo de solucionar ese enum-problema a través de Marshal.
Creé un Java-Enum "copiando" el .net uno. Entonces escribí una clase de mariscal para ella:
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
Luego, al llamar al método donde se enviarán MyEnum-Values:
//... blah blah SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.addMapping(SOAP_REMOTE_NAMESPACE, "MyEnum", MyEnum.class, MarshalEnum.getInstance()); //... and so on.
Tenga en cuenta que SOAP_REMOTE_NAMESPACE es el espacio de nombres de contrato de datos del enum a ser utilizado! Vea el archivo wsdl para encontrarlo si no está seguro. Debería parecer algo así como "http://schemas.datacontract.org/2009/08/Your.dotNet.Namespace".
Espero que esto vaya a funcionar para usted, también.
Tienes
[ServiceContract] [ServiceKnownType(typeof(CodeType))] public interface ITheService { [OperationContract] string TestEnum(CodeType code); }
y
[DataContract] public enum CodeType { // ... }
?
Editar:
Un poco de búsqueda también apareció esto , que puede ser de utilidad …
- Cambiar las teclas de función de fondo de negro a transparente en la aplicación android
- Cómo comprobar si el usuario está dentro de un círculo Google Maps v2