You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中获取第三方网站发送至指定URL的XML响应

问题:获取第三方网站发送至指定redirectUrl的XML响应失败

我们尝试通过以下代码获取XML数据,但未能成功:

public ActionResult Index()
{
    XmlDocument xdoc = new XmlDocument(); //xml doc used for xml parsing

    xdoc.Load("http://xxx/Home/Index"); 

    XmlNodeList xNodelst = xdoc.DocumentElement.SelectNodes("/Data/Quote/Product"); //reading node so that we can traverse thorugh the XML

    foreach (XmlNode xNode in xNodelst)//traversing XML 
    {
        Sessions.PartNumber = xNode["PartNum"].InnerText;
    }

    return View();
}
排查与解决方案

1. 修正数据接收逻辑

第三方网站发送到redirectUrl的XML一般是POST请求的请求体内容,你当前用XmlDocument.Load("url")是发起GET请求拉取页面,完全没处理POST过来的XML数据。正确做法是读取当前请求的输入流:

public ActionResult Index()
{
    using (StreamReader reader = new StreamReader(Request.InputStream))
    {
        string xmlContent = reader.ReadToEnd();
        XmlDocument xdoc = new XmlDocument();
        xdoc.LoadXml(xmlContent);

        XmlNodeList xNodelst = xdoc.DocumentElement.SelectNodes("/Data/Quote/Product");
        foreach (XmlNode xNode in xNodelst)
        {
            Sessions.PartNumber = xNode["PartNum"].InnerText;
        }
    }

    return View();
}

2. 校验XML节点路径

确认/Data/Quote/Product这个XPath路径和实际接收到的XML结构完全匹配。可以先将xmlContent输出到日志,查看XML真实结构后再调整XPath。

3. 处理编码问题

如果第三方发送的XML有特定编码,读取流时需指定对应编码:

using (StreamReader reader = new StreamReader(Request.InputStream, Encoding.UTF8))
{
    // 后续逻辑不变
}

4. 验证请求到达情况

先在Action中添加日志,确认第三方是否真的将请求发送到了该redirectUrl:

public ActionResult Index()
{
    System.IO.File.WriteAllText(@"C:\temp\request.log", $"Method: {Request.HttpMethod}\nContent: {new StreamReader(Request.InputStream).ReadToEnd()}");
    // 后续逻辑...
}

内容的提问来源于stack exchange,提问作者Potato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:20:28