首页 > 解决方案 > 如何将枚举值传递给 Genexus 15 中使用的 Web 服务?

问题描述

我无法使用在 C# 中完成的具有枚举属性和 DateTime 属性的 Web 服务。在 Genexus 15 中,使用 Java Generator,“JAX-Ws”用于生成“SOAP Native”Web 服务。导入 wsdl 没有失败。但是,在发送请求时,程序会给出以下错误消息:

request: 
  <Route xmlns="http://www.jfdkfjdkfjkd.com.br/">
  <Id>0</Id>
  <Name>fdfd 2387</Name>
  <IssuerId>434343</IssuerId>
  <OriginCityId>1302603</OriginCityId>
  <DestinationCityId>50308</DestinationCityId>
  <Modal>Road</Modal>
  </Route>

Modal 属性是枚举类型:Road、Air、Train、Others

导入 wsdl 没有失败。但是,在发送请求时,程序会给出以下错误消息:

No error.SOAP Fault: Error in client request.
Message: System.Web.Services.Protocols.SoapException: Server was unable to read request. ---> System.InvalidOperationException: There is an error in XML document (11, 13). ---> System.InvalidOperationException: Instance validation error: '' is not a valid value for ModalTypes.
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read7_ModalTypes(String s)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read11_Route(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read35_CreateRoute()
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer40.Deserialize(XmlSerializationReader reader)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
--- End of inner exception stack trace ---
at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
Detail: (-20004)

在这种情况下,如何通过 Web 服务发送枚举属性?有没有办法在 Genexus 或 wsdl 中手动配置 JaxB?

在 DateTime 属性的情况下,错误如下:

Detail: SOAP Fault: Error in client request.
Message: System.Web.Services.Protocols.SoapException: Server was unable to read request. ---> System.InvalidOperationException: There is an error in XML document (12, 17). ---> System.FormatException: The string '
' is not a valid AllXsd value.
at System.Xml.Schema.XsdDateTime..ctor(String text, XsdDateTimeFlags kinds)
at System.Xml.XmlConvert.ToDateTime(String s, XmlDateTimeSerializationMode dateTimeOption)
at System.Xml.Serialization.XmlCustomFormatter.ToDateTime(String value)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read14_Tracking(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read39_CreateTracking()
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer48.Deserialize(XmlSerializationReader reader)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
--- End of inner exception stack trace ---
at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
Detail: SOAP Fault: Error in client request.
Message: System.Web.Services.Protocols.SoapException: Server was unable to read request. ---> System.InvalidOperationException: There is an error in XML document (12, 17). ---> System.FormatException: The string '
' is not a valid AllXsd value.
at System.Xml.Schema.XsdDateTime..ctor(String text, XsdDateTimeFlags kinds)
at System.Xml.XmlConvert.ToDateTime(String s, XmlDateTimeSerializationMode dateTimeOption)
at System.Xml.Serialization.XmlCustomFormatter.ToDateTime(String value)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read14_Tracking(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read39_CreateTracking()
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer48.Deserialize(XmlSerializationReader reader)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
--- End of inner exception stack trace ---
at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
Detail: (-20004)

提前谢谢你的帮助。

到现在为止

标签: javajax-wsgenexus

解决方案


您可以在 Genexus 中定义枚举值,但是我不知道这是否足够您知道如何以正确的方式传递模态值吗?意思是:路不正确。什么是正确的?你可以尝试使用 SOAP ui 或类似的 web 服务吗?


推荐阅读