如何在肥皂信封中传递枚举值

时间:2017-01-26 12:13:24

标签: c# web-services soap enums

我尝试向服务器发送soap请求。我有这种肥皂形式,其中 urn:fetchType 是FetchType类型的枚举值:

public enum FetchType
{
    AllDetails = 0,
    OnlyRoot = 1
}

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="***">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:GetEventList>
         <!--Optional:-->
         <urn:sessionId></urn:sessionId>
         <!--Optional:-->
         <urn:filterXml></urn:filterXml>
         <urn:fetchType></urn:fetchType>
         <urn:subscribe></urn:subscribe>
      </urn:GetEventList>
   </soapenv:Body>
</soapenv:Envelope>

当我尝试发送1或2时,我收到错误响应:实例验证错误:'1'不是FetchType的有效值。

此外,我尝试传递类似FetchType.AllDetails的内容并获得响应:实例验证错误:'FetchType.AllDetails1'不是FetchType的有效值。

等......不同的解决方案。

这是应该接收请求的方法的签名:

public byte[] GetEventList(string sessionId, [XmlElement(DataType = base64Binary")] byte[] filterXml, FetchType fetchType, bool subscribe) { ... some code ...; }

你能告诉我用什么方法传递枚举值吗?

谢谢! :)

1 个答案:

答案 0 :(得分:0)

对于您来说太晚了,但是谁知道呢,也许有一天某人会需要这个问题的答案。

仅发送字符串值(例如:AllDetails

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="***">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:GetEventList>
         <!--Optional:-->
         <urn:sessionId></urn:sessionId>
         <!--Optional:-->
         <urn:filterXml></urn:filterXml>
         <urn:fetchType>AllDetails</urn:fetchType>
         <urn:subscribe></urn:subscribe>
      </urn:GetEventList>
   </soapenv:Body>
</soapenv:Envelope>