C# 执行GET调用时未通过Cookie头
前言:C# 执行GET调用时未通过Cookie头,c#,restsharp,restapi,C#,Restsharp,Restapi,前言: 这是我个人项目的一部分,该项目使用WinForms为多个通信设备构建一个控制GUI 遇到问题的代码部分位于表单的构造函数中 安装的其他NuGet软件包有:Newtonsoft.Json、RestSharp、SpecFlow和SpecFlow.Assist.Dynamic LoginForm和seatinfo是创建的两个基本类,仅用于存储和组织我的数据,它们除了属性声明之外没有其他编码 执行代码: using Newtonsoft.Json; using Newtonsoft.Json
- 这是我个人项目的一部分,该项目使用WinForms为多个通信设备构建一个控制GUI
- 遇到问题的代码部分位于表单的构造函数中
- 安装的其他NuGet软件包有:Newtonsoft.Json、RestSharp、SpecFlow和SpecFlow.Assist.Dynamic
- LoginForm和seatinfo是创建的两个基本类,仅用于存储和组织我的数据,它们除了属性声明之外没有其他编码
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RestSharp;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CONTROL_UI
{
public partial class RunningConfig : Form
{
public RunningConfig()
{
InitializeComponent();
var client = new RestClient("CLIENT_URL");
var loginRequest = new RestRequest("api/login", Method.POST);
loginRequest.RequestFormat = DataFormat.Json;
loginRequest.AddHeader("Content-type", "application/json");
loginRequest.AddJsonBody(new LoginForm() { username = "admin", password = "", @override = true });
var loginRespone = client.Execute(loginRequest);
JObject sessionInfo = JObject.Parse(loginRespone.Content);
var sessionID = sessionInfo["sid"];
var seatAvailRequest = new RestRequest("api/seats", Method.GET);
seatAvailRequest.AddHeader("sid", sessionID.ToString());
seatAvailRequest.AddHeader("Cookie", "sid = " + sessionID.ToString());
var seatResponse = client.Execute(seatAvailRequest);
List<SeatsInfo> seatsInfo = JsonConvert.DeserializeObject<List<SeatsInfo>>(seatResponse.Content);
//Further Implementation
}
}
}
这在某种程度上不适用于AddCookie()或AddHeader(),因此目前它们都在使用。希望这对别人有帮助,谢谢亚尔的阅读 因此,在重述中,我在API调用中缺少Cookie头,因此导致调用失败(设备未授权) 在使用AddCookie()方法之后,特别是:
seatAvailRequest.AddCookie("sid", sessionID.ToString());
设备给了我一个不同的错误-404未找到,在401未经授权之前:
最后,我愚蠢的头脑使用了AddCookie()和AddHeader()以及voilá:
它起作用了!只有经过5个小时痛苦的调试和令人麻木的搜索之后。虽然新的包有点大,但我现在不必担心,或者现实地说,未来也不必担心
谢谢大家的关注,欢迎大家提出建议和改进 @mjwills感谢您的帖子链接。虽然我确实经历了那一次,但不幸的是没有帮助。但我终于找到了答案,并在下面发表了评论。干杯
seatAvailRequest.AddCookie("sid", sessionID.ToString());