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

无法通过URL获取XML字符串,WebClient Cookie配置问题咨询

问题:无法获取目标XML内容,被重定向到Cookie验证页面

场景还原

我想用C#获取http://www.tcmb.gov.tr/kurlar/today.xml的XML内容,一开始写的代码是这样:

var client = new WebClient();
string response = client.DownloadString("http://www.tcmb.gov.tr/kurlar/today.xml");

但实际拿到的不是XML,而是一段带JS的HTML:

<html><body onload='resend();'>
<script>
function resend() {
    document.cookie="sto-idd=1954f1298f08833b; max-age=1; path=/";
    window.location.reload();
}
</script>
</body>
</html>

我试过手动加Cookie,但方法不对:

client.Headers.Add(HttpRequestHeader.Cookie,"max-age=1");
client.Headers.Add(HttpRequestHeader.Cookie,"sto-idd={some id}");

到底该怎么配置才能拿到正确的XML?


解决办法

这个网站需要先接收它返回的Cookie,再带着Cookie发起请求。WebClient默认不会自动处理Cookie,得手动配置Cookie容器,或者换用更省心的HttpClient:

方法1:WebClient + CookieContainer

using (var client = new WebClient())
{
    // 创建Cookie容器存储网站返回的Cookie
    var cookieContainer = new CookieContainer();
    // 先发起一次请求,让容器自动保存网站设置的Cookie
    var request = (HttpWebRequest)WebRequest.Create("http://www.tcmb.gov.tr/kurlar/today.xml");
    request.CookieContainer = cookieContainer;
    
    using (request.GetResponse())
    {
        // 无需处理响应,Cookie已存入容器
    }
    
    // 将容器中的Cookie转换成Header格式,添加到WebClient
    client.Headers.Add(HttpRequestHeader.Cookie, cookieContainer.GetCookieHeader(new Uri("http://www.tcmb.gov.tr/kurlar/today.xml")));
    // 现在请求即可获取XML内容
    string xmlContent = client.DownloadString("http://www.tcmb.gov.tr/kurlar/today.xml");
}

方法2:HttpClient(更简便)

HttpClient默认会自动管理Cookie,无需手动操作容器:

using (var httpClient = new HttpClient(new HttpClientHandler { UseCookies = true }))
{
    // 先发起一次请求,让HttpClient自动接收网站Cookie
    await httpClient.GetAsync("http://www.tcmb.gov.tr/kurlar/today.xml");
    // 再次请求即可获取XML
    string xmlContent = await httpClient.GetStringAsync("http://www.tcmb.gov.tr/kurlar/today.xml");
}

注意事项

  • 不要手动拆分Cookie添加,网站返回的是完整的Cookie字符串,需一次性加到Header中
  • WebClient本身无Cookie管理能力,必须借助CookieContainer;HttpClient更适合这类需要维持会话的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:57:57