Ошибка демаршаллинга ответа веб-службы SOAP - PullRequest
0 голосов
/ 23 февраля 2019

Я использую веб-службу SOAP и вызываю метод, чей ответ определяется в WSDL следующим образом -

<wsdl:operation name="changeRecording">
            <wsdl:input message="tns:changeRecording" name="changeRecording">
            </wsdl:input>
            <wsdl:output message="tns:changeRecordingResponse" name="changeRecordingResponse">
            </wsdl:output>
            <wsdl:fault message="tns:CaptureWebServiceException" name="CaptureWebServiceException">
            </wsdl:fault>
        </wsdl:operation>

<xs:complexType name="changeRecordingResponse">
                <xs:sequence>
                    <xs:element name="return" type="xs:boolean"/>
                </xs:sequence>
            </xs:complexType>

Я создал прокси-классы в C #, который интерпретирует это как -

 [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace = "http://webservice.sdk.ingest.automation.avid.com/", ResponseNamespace = "http://webservice.sdk.ingest.automation.avid.com/", 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 bool changeRecording([System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] userCredentials userCredentials, [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] scheduleChangeParams changeEvent)
        {
            object[] results = this.Invoke("changeRecording", new object[] {
                        userCredentials,
                        changeEvent});
            return ((bool)(results[0]));
        }

Обратите внимание, что метод changeRecording и тип возвращаемого значения bool.

Я вызываю эту веб-службу в коде -

bool result = avidClient.changeRecording(<params>);

, но получаю следующую ошибку -

System.Web.Services.Protocols.SoapHeaderException: Unmarshalling Error: null 
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at ScheduleClientService.changeRecording(userCredentials userCredentials, scheduleChangeParams changeEvent)

Похоже, веб-служба возвращает значение NULLвместо логического.И именно поэтому демаршализация / десериализация терпит неудачу.

Верно ли мое предположение?Ошибка в сервисе или я что-то делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...