SoapHttpClientProtocol протокол ответа xml - PullRequest
8 голосов
/ 07 октября 2011

На пару дней у нас проблемы с нашим приложением.Мы используем SoapHttpClientProtocol для вызова Java Mbeans.Это в основном делает вызов веб-службы Java для вызова методов.

Наша проблема в том, что иногда мы получаем следующее исключение:

Ошибка в XML-документе (1, 172089).в System.Xml.Serialization.XmlSerializer.Deserialize (события XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents)
в System.Xml.Serialization.XmlSerializer.Deserialize (XmlReader xmlReader, String encodingStyle) в System.Webtt..ReadResponse (сообщение SoapClientMessage, ответ WebResponse, поток responseStream, логический asyncCall) в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (параметры String methodName, Object []) в DynamicMBeanResourceBindingRequisionReviceSigner.Exchange.INF)781 в JMXWSClient.InvokeMethodOnObject (String objectName, String methodName, ParameterType [] paramValue) в подключении \ Client.cs: строка 132

Причина: произошел неожиданный конец файла.Следующие элементы не закрыты: Значок

Наш последний код на уровне связи:

 /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("soapHeaders", Direction = SoapHeaderDirection.In)]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://jsr262.dev.java.net/DynamicMBeanResource/Invoke", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("ManagedResourceOperationResult", Namespace = "http://jsr262.dev.java.net/jmxconnector")]
public GenericValueType Invoke([System.Xml.Serialization.XmlElementAttribute(Namespace = "http://jsr262.dev.java.net/jmxconnector")] OperationRequestType ManagedResourceOperation)
{
    object[] results = this.Invoke("Invoke", new object[] {ManagedResourceOperation});
    return ((GenericValueType)(results[0]));
}

Есть ли способ записи XML-ответа перед его десериализациейфреймворк?Любая помощь или идея очень приветствуется.

1 Ответ

3 голосов
/ 18 октября 2011

Самый простой способ сделать это простым способом - создать расширение SOAP. Я нашел хороший учебник здесь.

http://www.codeproject.com/KB/webservices/efficientsoapextension.aspx

...