如果您不想在每个请求中对您的凭据进行编码,这里是如何使用 cookie 进行的。
请求 cookie 时,您不需要在标头上添加任何授权。此方法将接受带有用户名和密码以及 URL 的 JSON 字符串。它将返回 cookie 值。
public async Task<JiraCookie> GetCookieAsync(string myJsonUserNamePassword, string JiraCookieEndpointUrl)
{
using (var client = new HttpClient())
{
var response = await client.PostAsync(
JiraCookieEndpointUrl,
new StringContent(myJsonUserNamePassword, Encoding.UTF8, "application/json"));
var json = response.Content.ReadAsStringAsync().Result;
var jiraCookie= JsonConvert.DeserializeObject<JiraCookie>(json);
return jArr;
}
}
public class JiraCookie
{
public Session session { get; set; }
}
public class Session
{
public string name { get; set; }
public string value { get; set; }
}
当我使用 url: http://[baseJiraUrl]/rest/auth/1/session调用它时,它返回以下 JSON 响应:
{
"session" : -{
"name" : JSESSIONID,
"value" : cookieValue
}
请记住,上面的 URL 在我使用的 JIRA 版本中有效,并且可能会因您使用的版本而异。阅读 JIRA API 文档以获取您正在使用的版本的正确 URL。我正在使用以下内容:
https ://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#auth/1/session
请记住,您必须存储 cookie 并在每个后续请求中使用它。查看有关如何将 cookie 添加到 HttpClient 请求的答案:如何在 HttpClient 的 HttpRequestMessage 上设置 cookie。
完成 cookie(注销)后,只需发送与帖子相同 URL 的删除 http 请求。