Как изменить прокси веб-сервиса для получения Raw XML - PullRequest
3 голосов
/ 05 февраля 2009

Вот прокси-метод, созданный для веб-службы, к которой я пытаюсь получить доступ. Как мне изменить его, чтобы получить необработанный XML из вызова веб-службы?

        /// <remarks/>
    [System.Web.Services.Protocols.SoapHeaderAttribute("CallOptionsValue")]
    [System.Web.Services.Protocols.SoapHeaderAttribute("MruHeaderValue")]
    [System.Web.Services.Protocols.SoapHeaderAttribute("SessionHeaderValue")]
    [System.Web.Services.Protocols.SoapHeaderAttribute("QueryOptionsValue")]
    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace = "urn:partner.soap.sforce.com", ResponseNamespace = "urn:partner.soap.sforce.com", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
    [return: System.Xml.Serialization.XmlElementAttribute("result")]
    public QueryResult query(string queryString)
    {
        object[] results = this.Invoke("query", new object[] {
                    queryString});
        return ((QueryResult)(results[0]));
    }

Спасибо за вашу помощь!

Ответы [ 3 ]

3 голосов
/ 19 июня 2009

К счастью, есть хороший способ сделать это, просто измените сгенерированный прокси-класс, чтобы он наследовал от другой базы. Альтернативная реализация взята из пакета Web Services Enhancements 3.0:

Microsoft.Web.Services3.WebServicesClientProtocol

в классе вы будете иметь RequestSoapContext.Envelope.InnerXml и ResponseSoapContext.Envelope.InnerXml в объеме - это именно то, что вам нужно.

2 голосов
/ 06 февраля 2009

Если вы хотите просто создать дамп с помощью Fiddler Web Debugging tools .

Если вы действительно хотите извлечь / обработать необработанный XML, прокси-метод вам не поможет. Создайте System.Net.HttpWebRequest для веб-службы, вызовите его и получите чистый XML-ответ. Формат / структуру можно найти на странице .ASPX или в документации веб-сервиса.

0 голосов
/ 06 февраля 2009

Ну, насколько я помню, мой приятель, что это когда-то с обычными веб-сервисами ASMX, и это было довольно взломать ....

Как насчет простого сериализации результата, который вы вернете в XML? Это могло бы помочь ...

Что-то вроде (полностью не проверено и по памяти):

MemoryStream stm = new MemoryStream();
XmlSerializer xmlSer = new XmlSerializer(typeof(QueryResult));
xmlSer.Serialize(stm, queryResult);

Будет ли это работать?

Марк

...