首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取XML响应webservice

读取XML响应webservice
EN

Stack Overflow用户
提问于 2012-04-17 09:22:32
回答 2查看 13.9K关注 0票数 0

我对.Net web服务编程非常陌生。我在读取web服务到我的客户端的XML响应时遇到了麻烦。

在我的webservice端: Service1.asmx.cs代码:

代码语言:javascript
运行
复制
    [WebMethod(Description = "substruction")]
    public double subtract(double i, double j)
    {
        return i - j;
    }


    [WebMethod(Description = "getxml")]
    public XmlDocument GetXML()
    {
        StringBuilder sb = new StringBuilder();
        XmlWriter writer = XmlWriter.Create(sb);

        writer.WriteStartDocument();
        writer.WriteStartElement("People");

        writer.WriteStartElement("Person");
        writer.WriteAttributeString("Name", "Nick");
        writer.WriteEndElement();

        writer.WriteStartElement("Person");
        writer.WriteStartAttribute("Name");
        writer.WriteValue("Kevin");
        writer.WriteEndAttribute();
        writer.WriteEndElement();

        writer.WriteEndElement();
        writer.WriteEndDocument();

        writer.Flush();

        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.LoadXml(sb.ToString());
        return xmlDocument;

    }

在这里,我创建了两个测试响应的方法。在GetXML中,我创建了一个非常简单的XML,并将包XML返回给客户端。

在我的客户端:

代码语言:javascript
运行
复制
    // Add button click function 
    protected void Button1_Click(object sender, EventArgs e)
    {
        string selectFlag = selectOper.Value;
        localhost.Service1 web = new localhost.Service1(); // Have to be the same name as youre Service1. 
        if (selectFlag.Equals("+"))
        {
            Result.Text = (web.addition(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
        }
        else if (selectFlag.Equals("-"))
        {
            Result.Text = (web.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
        }

    }

    protected void Button2_Click(object sender, EventArgs e)
    {


        localhost.Service1 web2 = new localhost.Service1(); // Can u please do not be so silly, use different instance name here. 
        Button clickedButton = (Button)sender;

        XmlDocument xmltest = new XmlDocument();
        xmltest = web2.GetXML();

您可以看到,我试图获取web2.GetXML(),将整个XML导入XmlDoucment。但是,它说错误1不能隐式地将类型'object‘转换为'System.Xml.XmlDocument’。存在显式转换(是否缺少强制转换?)C:\文档和设置\qili\我的Documents\Downloads\WebService3\WebService2\WebService2\Default.aspx.cs 39 24 WebService2

任何提示,我想我做错了什么。但是Buttom1_Click方法工作得很好。

EN

回答 2

Stack Overflow用户

发布于 2012-04-17 09:26:50

尝试转换服务的响应:

代码语言:javascript
运行
复制
protected void Button2_Click(object sender, EventArgs e)
    {


     localhost.Service1 web2 = new localhost.Service1(); // Can u please do not be so silly, use different instance name here. 
     Button clickedButton = (Button)sender;
     XmlDocument xmltest = new XmlDocument();
     xmltest = (XmlDocument)web2.GetXML();
    }
票数 0
EN

Stack Overflow用户

发布于 2015-11-02 07:15:25

您应该尝试删除服务引用,重新运行服务,并在客户端上添加服务引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10188517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档