如何从asmx web服务返回纯XML?

5
我希望您能提供一个包含GetPeople()方法的asmx webservice,该方法返回以下XML(不是SOAP响应):
<People>

    <Person>
        <FirstName>Sara</FirstName>
        <LastName>Smith</LastName>
    </Person>

    <Person>
        <FirstName>Bill</FirstName>
        <LastName>Wilson</LastName>
    </Person>

</People>

我该如何做到这一点?
4个回答

3

3
如果你不想让响应以SOAP信封的形式返回,那么你是否也不介意使用SOAP调用Web服务。例如,你不会创建代理类、Web引用等,只是使用http post或get来调用Web服务?
如果是这样,那么不要编写Web服务,而是编写ASHX处理程序文件。然后,你可以简单地将Response.ContentType设置为text/xml,并执行Response.Write(XmlDocument.ToString())。这将返回纯净的XML和相关的HTTP头信息。

我也在考虑那个选项。但我仍然对这个问题的答案感兴趣。 - User

2

我看到可以将方法的返回类型设置为XmlDocument。这似乎有效。

[WebMethod]
public XmlDocument ReturnXml()
{
    XmlDocument dom = new XmlDocument();

    XmlElement people = dom.CreateElement("People");
    dom.AppendChild(people);

    XmlElement person = dom.CreateElement("Person");
    people.AppendChild(person);

    XmlElement firstName = dom.CreateElement("FirstName");
    person.AppendChild(firstName);

    XmlText text = dom.CreateTextNode("Bob");
    firstName.AppendChild(text);



    // load some XML ...
    return dom;
}

-1:你试过这个吗?它不起作用。它会在一个SOAP信封中返回XML。 - John Saunders
是的,我确实尝试过,并且至少通过生成的自动页面上的“invoke”方法它可以工作,因此我才发布了它。我会再次尝试以确认。 - User
4
永远不要依赖那个测试页面。除其他原因外,它没有调用使用SOAP的方法! - John Saunders
现在我已经尝试过不使用测试页面,它可以工作。为了澄清,我是通过HTTP POST进行调用的。我还没有尝试过SOAP请求,但我不打算通过SOAP进行调用。 - User

1

您可以使用Soap扩展来创建/定制符合您需求的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接