Как передать перечисляемые значения в веб-сервис, используемый в Genexus 15? - PullRequest
0 голосов
/ 26 февраля 2019

У меня проблемы с использованием веб-службы, созданной на C #, которая имеет атрибут enum и атрибут DateTime.В Genexus 15, используя Java Generator, «JAX-Ws» используется для генерации «SOAP Native» веб-сервисов.Импортировать 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>

Модальный атрибут имеет тип enum: 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)

Как в этом случае я могу отправить атрибуты enum через веб-сервис?Есть ли способ настроить JaxB в Genexus или wsdl вручную?

В случае атрибута 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)

Заранее благодарю за помощь.

На данный момент

1 Ответ

0 голосов
/ 28 февраля 2019

Вы могли бы определить значения enum в Genexus, однако я не знаю, достаточно ли этого, знаете ли вы, как правильно передать модальное значение?Это означает: дорога, это не правильно.Что будет правильным?не могли бы вы попробовать веб-сервис, используя пользовательский интерфейс SOAP или что-то подобное?

...