c# RestSharp:添加和删除 cookie 因为 Statuscode 403
c# RestSharp: Adding and delete cookie because Statuscode 403
我目前正在尝试使用 RestSharp(版本 107.1.2)获取外部 API 的信息。不幸的是,在每个请求中,我都会收到状态代码 403“禁止访问”的响应。我现在联系了提供商,他告诉我,先删除所有 cookie,然后添加 cookie“SMCHALLENGE=YES”。
我在 RestSharp 中尝试过,但是在使用 client.AddCookie 扩展时,我收到 ArgumentException。我现在找到了另一个选项,在 header 中添加 cookie,但这也不起作用。
您知道如何删除所有 cookie 然后添加 SMCHALLENGE cookie 吗?
var client = new RestClient("https://test.de/api/token");
string resource = null;
client.Authenticator = new HttpBasicAuthenticator("testUser", "testPW");
string apiKey = null;
var request = new RestRequest(resource, Method.Get);
//Following execution throws System.ArgumentException: "The {0} parameter cannot be an empty string. Parameter name: cookie.domain"
//client.AddCookie("SMCHALLENGE", "YES");
request.AddHeader("Cookie", "SMCHALLENGE=YES");
var response = client.ExecuteAsync(request);
response.Wait();
RestResponse rr = response.Result;
非常感谢!
Cookie 不是 headers。您需要将您的 cookie 添加到 RestClient
自己的 cookie 容器中。响应中返回的 cookie 也将在 cookie 容器中可用。 RestClient
上有一个函数可以作为快捷方式执行此操作。
var client = new RestClient("https://test.de/api/token");
client.AddCookie("SMCHALLENGE", "YES");
您还可以使用 cookie 容器:
client.CookieContainer.Add(new Cookie(...));
您需要避免为每个请求创建一个新的 RestClient
实例。这样您还可以跨请求保留 cookie。
我目前正在尝试使用 RestSharp(版本 107.1.2)获取外部 API 的信息。不幸的是,在每个请求中,我都会收到状态代码 403“禁止访问”的响应。我现在联系了提供商,他告诉我,先删除所有 cookie,然后添加 cookie“SMCHALLENGE=YES”。
我在 RestSharp 中尝试过,但是在使用 client.AddCookie 扩展时,我收到 ArgumentException。我现在找到了另一个选项,在 header 中添加 cookie,但这也不起作用。
您知道如何删除所有 cookie 然后添加 SMCHALLENGE cookie 吗?
var client = new RestClient("https://test.de/api/token");
string resource = null;
client.Authenticator = new HttpBasicAuthenticator("testUser", "testPW");
string apiKey = null;
var request = new RestRequest(resource, Method.Get);
//Following execution throws System.ArgumentException: "The {0} parameter cannot be an empty string. Parameter name: cookie.domain"
//client.AddCookie("SMCHALLENGE", "YES");
request.AddHeader("Cookie", "SMCHALLENGE=YES");
var response = client.ExecuteAsync(request);
response.Wait();
RestResponse rr = response.Result;
非常感谢!
Cookie 不是 headers。您需要将您的 cookie 添加到 RestClient
自己的 cookie 容器中。响应中返回的 cookie 也将在 cookie 容器中可用。 RestClient
上有一个函数可以作为快捷方式执行此操作。
var client = new RestClient("https://test.de/api/token");
client.AddCookie("SMCHALLENGE", "YES");
您还可以使用 cookie 容器:
client.CookieContainer.Add(new Cookie(...));
您需要避免为每个请求创建一个新的 RestClient
实例。这样您还可以跨请求保留 cookie。