2009-02-05 22 views
3

以下是爲我嘗試訪問的Web服務創建的代理方法。我將如何修改它以從Web服務調用中獲取原始XML?如何修改webservice代理以獲取Raw 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

幸運的是,有一個很好的方法來做到這一點,只需修改生成的代理類,使其從不同的基地繼承。另一種方法執行來自Web服務增強3.0包:

Microsoft.Web.Services3.WebServicesClientProtocol

在班上你有RequestSoapContext.Envelope.InnerXml和ResponseSoapContext.Envelope.InnerXml的範圍 - 這正是你需要的。

0

嗯,我記得,我的這一次定期ASMX web服務,這是一個相當黑客....好友

如何只序列化你回XML的結果?這可能做的伎倆......

沿着線(沒有經過測試和內存)的東西:

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

將這項工作?

馬克

2

如果要使用Fiddler Web Debugging tools只是做一個轉儲。

如果您想真正回顧/處理原始XML,那麼代理方法不會對您有所幫助。爲Web服務創建System.Net.HttpWebRequest,調用它,並檢索純XML響應。格式/結構可以在.ASPX頁面或Web服務文檔中找到。

+0

提琴手是太棒了,謝謝你! – 2009-10-01 20:46:25

相關問題