Я совершенно новичок в сериализации и буду очень признателен за любую помощь.
У меня проблемы с десериализацией ответного сообщения, полученного от прокси-класса, созданного мной через WSDL.exe. Я считаю, что проблема заключается в том, что я использую XmlArrayItem, в который вложены элементы.
Вместо получения:
<results xmlns="urn:partner.soap.company.com">
<result>
<created>false</created>
<id>0018000000ZqV8DAAV</id>
<success>true</success>
</result>
<result>
<created>false</created>
<id>0018000000ZqVMAAA3</id>
<success>true</success>
</result>
</results>
Я получаю следующее в коде:
created(0):false
id(0): false 0018000000ZqV8DAAV
success(0):false 0018000000ZqV8DAAVtrue
created(1):false 0018000000ZqV8DAAVtruefalse
id(1): false 0018000000ZqV8DAAVtruefalse0018000000ZqVMAAA3
success(1): false 0018000000ZqV8DAAVtruefalse0018000000ZqVMAAA3true
Похоже, что ответ просто добавляет следующую часть сообщения, не убирая ничего, что было ранее.
Вот основная функция, которая вызывает веб-сервис:
<System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use:=System.Web.Services.Description.SoapBindingUse.Literal, _
ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Bare)> _
Public Function Provide_Service(<System.Xml.Serialization.XmlElement([Namespace]:="http://www.company.com/connectors/request/129/")> _
ByVal USIUpdates As USIUpdates) As _
<System.Xml.Serialization.XmlArray("results", IsNullable:=False, [Namespace]:="urn:partner.soap.sforce.com"), _
System.Xml.Serialization.XmlArrayItem("result", IsNullable:=False)> UpsertResult()
Dim results() As Object = Me.Invoke("Provide_Service", New Object() {USIUpdates})
Return CType(results(0), UpsertResult())
End Function
А вот класс, который генерирует ответ:
<System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute([Namespace]:="urn:partner.soap.company.com")> _
Partial Public Class UpsertResult
'Public ReturnResponseItems As [ResponseItems]
Private createdField As String
Private errorsField() As [Error]
Private idField As String
Private successField As String
'''<remarks/>
Public Property created() As String
Get
Return Me.createdField
End Get
Set(ByVal value As String)
Me.createdField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("errors")> _
Public Property errors() As [Error]()
Get
Return Me.errorsField
End Get
Set(ByVal value As [Error]())
Me.errorsField = value
End Set
End Property
'''<remarks/>
<XmlElementAttribute(isnullable:=True)> _
Public Property id() As String
Get
Return Me.idField
End Get
Set(ByVal value As String)
Me.idField = value
End Set
End Property
'''<remarks/>
Public Property success() As String
Get
Return Me.successField
End Get
Set(ByVal value As String)
Me.successField = value
End Set
End Property
End Class
Буду признателен за любые идеи или советы о том, как с этим справиться.