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

如何使用RestSharp发送多个请求同时保留会话状态?

实现带CSRF验证的会话保持请求流程(C# RestSharp)

核心要点

  • RestClient默认会自动维护Cookie容器,复用同一个client实例即可保留会话信息(Cookie、请求头等),无需重新创建。
  • 先发送GET请求获取页面中的CSRF令牌,再构造POST请求提交JSON数据并携带该令牌。

修正后的完整代码

// 初始化RestClient,复用该实例以保持会话
var client = new RestClient("https://example.com");
var getRequest = new RestRequest();
getRequest.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36");

// 发送GET请求获取CSRF令牌
var getResponse = client.Execute(getRequest);
if (getResponse.StatusCode == System.Net.HttpStatusCode.OK)
{
    string sourceContent = Uri.UnescapeDataString(getResponse.Content);
    // 从响应内容中解析CSRF令牌(需确保Parse方法逻辑正确)
    string csrfToken = Parse(sourceContent, "RpsCsrfState%3d", "&");

    // 构造POST请求,指定目标接口URL
    var postRequest = new RestRequest("https://example.com/your-post-endpoint", Method.Post);
    postRequest.RequestFormat = DataFormat.Json;

    // 添加CSRF请求头(注意头名称需和目标站点要求一致,比如X-CSRF-Token)
    postRequest.AddHeader("csrf", csrfToken);
    // 构造JSON请求体
    string jsonBody = "{\"userId\":\"asd\",\"password\":\"welcome\"}";
    postRequest.AddStringBody(jsonBody, ContentType.Json);

    // 发送POST请求,会话Cookie自动携带
    var postResponse = client.Execute(postRequest);
}

// 补充Parse方法实现:从指定字符串中截取start和end之间的内容
private string Parse(string content, string startMarker, string endMarker)
{
    int startIndex = content.IndexOf(startMarker) + startMarker.Length;
    int endIndex = content.IndexOf(endMarker, startIndex);
    if (startIndex > -1 && endIndex > startIndex)
    {
        return content.Substring(startIndex, endIndex - startIndex);
    }
    return string.Empty;
}

关键修正说明

  1. 会话保持:全程复用同一个RestClient实例,它会自动存储和发送Cookie,无需手动处理。
  2. 请求隔离:GET和POST请求使用独立的RestRequest对象,避免参数污染;POST请求需明确指定目标接口URL。
  3. CSRF令牌解析:补充了Parse方法的具体实现,确保能正确从响应内容中提取CSRF值(若目标站点的CSRF存储位置不同,需调整解析逻辑)。
  4. 请求头与请求体:确保POST请求的Content-Type为application/json,CSRF头名称需匹配目标站点的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:15:15