这是为我正在尝试访问的Web服务创建的代理方法。我将如何修改它以从Web服务调用中获取原始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]));
}
感谢您的帮助!
答案 0 :(得分:3)
幸运的是,有一种很好的方法,只需修改生成的代理类,使其从不同的基础继承。替代实现来自Web Services Enhancements 3.0包:
Microsoft.Web.Services3.WebServicesClientProtocol
在类中,你将在范围内拥有RequestSoapContext.Envelope.InnerXml和ResponseSoapContext.Envelope.InnerXml - 这正是你所需要的。
答案 1 :(得分:2)
如果您只想使用Fiddler Web Debugging tools进行转储。
如果您想真正检索/处理原始XML,那么代理方法将无法帮助您。为Web服务创建System.Net.HttpWebRequest,调用它,并检索纯XML响应。格式/结构可以在.ASPX页面或Web服务文档中找到。
答案 2 :(得分:0)
嗯,据我所知,我的一个伙伴,曾经使用常规的ASMX网络服务,而且非常黑客......
如何序列化返回XML的结果?这可能会成功......
某些事情(完全未经测试和记忆):
MemoryStream stm = new MemoryStream();
XmlSerializer xmlSer = new XmlSerializer(typeof(QueryResult));
xmlSer.Serialize(stm, queryResult);
那会有用吗?
马克