0

我正在尝试编写一个应用程序(简单形式),它将使用(调用)Web 服务(Service1.asmx)并显示结果。现在,Web 服务有了一个方法。这是代码:

public class Service1 : System.Web.Services.WebService
{

    [WebMethod]
    public Customer getCustomer(String id)
    {
        Customer customer = new Customer();

        customer.CustomerId = id;
        customer.CustomerName = "ABC Warehouse";
        customer.CustomerAddress = "123 Anywhere";
        customer.CustomerCity = "Pittsburgh";
        customer.CustomerState = "PA";
        customer.CustomerZip = 10379;
        customer.CustomerContact = "Dan Smith";
        customer.CustomerPhone = "2484567890";
        customer.CustomerCredit = "True";

        return customer;
    }
} 

当我从其原始项目运行 Web 服务时,我可以在文本框中输入文本Example并单击调用以查看 xml 结果Example。现在,我在另一个项目中的简单表单有一个文本框 (txt1)、按钮 (btn1) 和标签 (lbl1)。我成功添加了 Web 服务,并且所有的功能和类都转移了。现在,我想要发生的是当您在文本框中键入内容时,单击提交,然后查看标签中的 xml 结果,该标签将包含文本框中键入的文本,就像我在其上运行服务一样自己的。这是我遇到问题的代码:

    public partial class _Default : System.Web.UI.Page
    {
        protected void btn1_Click(object sender, EventArgs e)
        {
            MyService.Service1 service = new MyService.Service1();
            string message = service.getCustomer(string id);
            ID = txt1.Text;
            lbl1.Text = message; 
        }
    }

我哪里错了?我显然是一个初学者,所以所有的帮助将不胜感激。ps: MyService 是我添加 web 服务时命名的命名空间

4

3 回答 3

3

您的代码将无法编译,因为 getCustomer 返回 Customer 对象。

    protected void btn1_Click(object sender, EventArgs e)
    {
        MyService.Service1 service = new MyService.Service1();
        MyService.Customer customer= service.getCustomer(string id);
        ID = customer.CustomerId;
        // here you can generate XML based on customer object if you really need to do so
        lbl1.Text = GetCustomerXML(customer);// implement method to get XML
    }

    private string GetCustomerXML( MyService.Customer  customer)
    {
        XmlSerializer xsSubmit = new XmlSerializer(typeof(MyService.Customer));
        StringWriter sw= new StringWriter();
        XmlWriter writer = XmlWriter.Create(sw);
        xsSubmit.Serialize(writer, customer);
        return sw.ToString(); 
    }
于 2013-04-12T04:59:17.083 回答
0

首先,在服务方法中,您需要定义响应格式数据必须是 XML 格式。然后在客户端使用'XmlNode'从服务中获取数据。 我认为这篇文章对你有用

于 2013-04-12T04:37:21.270 回答
0

您的错误是认为您将恢复 XML。你不是。你会MyService.Customer回来的。

仅供参考,您应该使用“添加服务引用”来使用 .asmx 服务。

于 2013-04-12T04:44:38.290 回答