java - 如何将枚举值传递给 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)
提前谢谢你的帮助。
到现在为止
解决方案
您可以在 Genexus 中定义枚举值,但是我不知道这是否足够您知道如何以正确的方式传递模态值吗?意思是:路不正确。什么是正确的?你可以尝试使用 SOAP ui 或类似的 web 服务吗?
推荐阅读
- c# - 如何正确继承Unity的Awake()、Start()、Update、FixedUpdate()等回调函数?
- excel - 个人工作簿宏未运行
- ios - 使用 ConneckSDK 获取 LG TV 的应用程序列表时出现 401 Unauthorized
- javascript - 我的 jquery 函数正在将元素推送到我的所有数组
- android - 如何创建类似 YouTube 的信息栏/小吃栏?
- sql - 将单个字段与字段平均值进行比较 (SQL)
- javascript - VueJS:如何在没有输入的情况下设置输入模型
- swift - 拍照后快速相机编辑帧
- python - 使用 irc.bot.SingleServerIRCBot 持续存在的线程(与 twitch 一起使用)
- android - 无法在 Kotlin 中初始化 GoogleMap 对象