我想在 android 应用程序中调用 soap web 服务,它需要一个枚举值作为参数,它是一个标志枚举。如何从 Android 应用程序将一些值作为标志枚举传递给此 Web 服务方法?
我使用 Ksoap 来调用 soap 服务。
Web服务方法:
[WebMethod]
public ReceptionCommitResult CommitReceiption(some parameters, EnumName myEnum)
{
//mehod body
}
和网络服务枚举:
[Flags]
public enum EnumName
{
One= 0,
Two = 1,
Three = 2,
Four = 4,
Five = 8,
}
最后是调用服务的代码:
SoapObject soapObj = new SoapObject(ServiceUtil.WSDL_TARGET_NAMESPACE, "RCI");
AttributeInfo attrInfo = new AttributeInfo();
attrInfo.setName("myEnum");
attrInfo.setValue("");
attrInfo.setType(EnumName.class);
soapObj.addAttribute(attrInfo);
SoapSerializationEnvelope _envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
_envelope.skipNullProperties = false;
_envelope.implicitTypes = true;
_envelope.dotNet = true;
_envelope.setOutputSoapObject(_client);
_envelope.bodyOut = _client;
_envelope.addMapping(WSDL_TARGET_NAMESPACE, "RCI",new MyClassObject().getClass());
HttpTransportSE httpTransport1 = new HttpTransportSE(ServiceUtil.SOAP_ADDRESS, 60000000);
httpTransport1.debug = true;
httpTransport1.call(ServiceUtil.SOAP_ACTION, _envelope);
最佳答案
在 C# 中,枚举标志通常在内部表示为 32/64 位整数。所以通常你只需要将你的枚举值转换为一个整数值并传递给 webservice。
也许你需要尝试这样的事情:
AttributeInfo attrInfo = new AttributeInfo();
attrInfo.setName("myEnum");
attrInfo.setValue("5"); //For a value of Two | Four
attrInfo.setType(EnumName.class);
soapObj.addAttribute(attrInfo);
关于android - 如何将值传递给 Android 应用程序中的 Soap 服务(ASMX 服务)中的标志枚举参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28655604/