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就是需要的数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?