Клиент Web-сервиса SAP - Десериализация не удалась - PullRequest
2 голосов
/ 01 апреля 2011

Я создал простой Net WebSvc Client, который получает актуальную ссылку на Sap WebSvc. Он ожидает String и четыре элемента, отправленных по ссылке: три массива пользовательских объектов и другой пользовательский объект за пределами любой структуры коллекции (у меня есть их формат на странице ссылки)

Когда вызывается запрос на выполнение операции, я получаю SoapException «Сбой десериализации» в строке вызова. ( Внизу я пишу: фрагмент моего кода, метод Reference.cs, который я вызываю, и ошибку, настолько полную, насколько я могу. )

Исследуя сеть, я обнаружил эту ветку форума SAP, на которой кто-то отвечает, что распространенными проблемами, которые показывают эту ошибку, являются не обновленные wsdl и подчеркивание в именах переменных-членов но ни один из них не мой случай. На самом деле тема продолжалась, но без ответа парню с той же проблемой, что и у меня.

В любом случае, я думаю, ребята из StackOverflow более активны; -)

Заранее спасибо людям!


Извлечение моего кода:

 string destiny = "myDest";
 ZICQService ZICQ = new ZICQService();
 ZtyEE070[] innerHeadList = HeadLst.ToArray();
 ZtyEE071[] innerObjList = ObjLst.ToArray();
 Zrequest[] innerTRequest = TRequest.ToArray();
 //This is the row of the Deserialization failed
 Bapiret2 respnse = svc.ZbcInsertRequest(destiny, ref innerHeadList, ref innerObjList, IClrQst, ref innerTRequest); 

А это мой веб-сервис Метод привязки Reference.cs:

    [System.Web.Services.Protocols.SoapDocumentMethodAttribute
    ("", RequestNamespace="urn:sap-com:document:sap:soap:functions:mc-style", 
    ResponseNamespace="urn:sap-com:document:sap:soap:functions:mc-style", 
    Use=System.Web.Services.Description.SoapBindingUse.Literal, 
    ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("Return", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public Bapiret2 ZbcInsertRequest(
    [System.Xml.Serialization.XmlElementAttribute
        (Form=XmlSchemaForm.Unqualified)] 
    string Destino, 
    [System.Xml.Serialization.XmlArrayAttribute
        (Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    [System.Xml.Serialization.XmlArrayItemAttribute
        ("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)] 
    ref ZtyEE070[] EtRequestHeader, 
    [System.Xml.Serialization.XmlArrayAttribute
        (Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    [System.Xml.Serialization.XmlArrayItemAttribute
        ("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)] 
    ref ZtyEE071[] EtRequestObj, 
    [System.Xml.Serialization.XmlElementAttribute
        (Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    Zclrqstdat IClrqst, 
    [System.Xml.Serialization.XmlArrayAttribute
        (Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    [System.Xml.Serialization.XmlArrayItemAttribute
        ("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)] 
    ref Zrequest[] TRequest) 
{
    object[] results = this.Invoke("ZbcInsertRequest", new object[] {
                Destino,
                EtRequestHeader,
                EtRequestObj,
                IClrqst,
                TRequest});
    EtRequestHeader = ((ZtyEE070[])(results[1]));
    EtRequestObj = ((ZtyEE071[])(results[2]));
    TRequest = ((Zrequest[])(results[3]));
    return ((Bapiret2)(results[0]));
}

Ошибка:

System.Web.Services.Protocols.SoapException

было обработано

Сообщение = "Сбой десериализации"

Source = "System.Web.Services"

Actor = "" Lang = "en" Node = ""

Role = "" StackTrace:

   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage

сообщение, ответ WebResponse, поток

responseStream, Boolean asyncCall)

   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String

methodName, Object [] параметры)

   at SCM.Manager.mx.com.hylsamex.hmxwasd1.ZICQService.ZbcInsertRequest(String

Destino, ZtyEE070 [] & EtRequestHeader,

ZtyEE071 [] & EtRequestObj, Zclrqstdat

IClrqst, Zrequest [] и TRequest) в

D: \ Documents and Settings \ apacay \ My

Документы \ Visual Studio

2005 \ Projects \ Desarrollo

SCM \ scm.manager \ SCM.Manager \ Web

Ссылки \ mx.com.hylsamex.hmxwasd1 \ Reference.cs: строка 85

   at SCM.Manager.SAPDataMockUp.SendOTs() in

D: \ Documents and Settings \ apacay \ My

Документы \ Visual Studio

2005 \ Projects \ Desarrollo

SCM \ scm.manager \ SCM.Manager \ SAPDataMockUp.cs: строка 164

   at SCM.Manager.Threads.HandleSap.Send()

в D: \ Documents and Settings \ apacay \ My

Документы \ Visual Studio

2005 \ Projects \ Desarrollo

SCM \ scm.manager \ SCM.Manager \ Threads \ HandleSap.cs: строка 24

   at SCM.Manager.Front.Main(String[] args)

в D: \ Documents and Settings \ apacay \ My

Документы \ Visual Studio

2005 \ Projects \ Desarrollo

SCM \ scm.manager \ SCM.Manager \ Front.cs: строка 170

   at System.AppDomain._nExecuteAssembly(Assembly

сборка, строка [] args)

   at System.AppDomain.ExecuteAssembly(String

сборка файла, доказательства

AssemblySecurity, String [] args)

   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()

   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)

   at System.Threading.ExecutionContext.Run(ExecutionContext

executeContext, ContextCallback

обратный вызов, состояние объекта)

   at System.Threading.ThreadHelper.ThreadStart()
...