C# WebService返回List<T>类型数据

服务端

1、新建WebService服务,添加函数

[WebMethod]
public List<Test> GetData(string time)
{
    try
    {
        List<Test> testList= new List<Test>();
        
        //中间调用获取数据的逻辑代码
        
        return testList;
    }
    catch(Exception ex)
    {
        return null;
    }
}

服务端默认返回的是xml数据

2、需要配置WebService的配置文件,使其支持get、post请求
在Web.config文件的system.web节点下,增加以下内容

<webServices>
  <protocols>
    <add name="HttpPost" />
    <add name="HttpGet" />
  </protocols>
</webServices>

服务端返回的数据如下所示:

<ArrayOfTest  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns="http://tempuri.org/">
  <Test>
    <Charge>50</Charge>
    <Prop>1</Prop>
  </Test>
  <Test>
    <Charge>20</Charge>
    <Prop>2</Prop>
  </Test>
</ArrayOfTest>

调用端

1、新建实体类,与服务端的Test对应,并配置xml节点信息

public class Test
{
    [XmlIgnore]  // xml不包含此节点
    public string Name { get; set; }

    [XmlElement(ElementName = "Charge")]  //xml中此字段对应的节点名称为Charge
    public decimal Charge { get; set; }
    
    [XmlElement(ElementName = "Prop")]
    public string Prop { get; set; }

    [XmlIgnore]
    public string BackUp { get; set; }
}

[XmlRoot("ArrayOfTest")]
public class ArrayOfTest
{
    [XmlElement("Test")]
    public List<Test> TestList;
}

2、调用服务

string url = $"http://127.0.0.1:9000/WebService1.asmx/GetData?time=20250101";
string res = HttpHelper.Gets(url);
using (StringReader sr = new StringReader(res))
{
    var ser = new XmlSerializer(typeof(ArrayOfTest), "http://tempuri.org/");
    ArrayOfTest items = (ArrayOfTest)ser.Deserialize(sr);
    if (items != null)
    {
        List<Test> tests = items.TestList;
    }
}

最终得到的tests就是需要的数据

posted @   LuoLh  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示