尝试获取Rest请求。我能够从推荐的方法中获取Cookie,但无法处理以下请求。标题中列出的回复在以下条件下返回:
foreach(RestResponseCookie a in response.Cookies){
if(a.Name == "JSESSIONID")
{
request.AddHeader("cookie:" + a.Name, a.Value);
}
}
response = client.Execute(request);
这将返回“指定的值具有无效的HTTP标头字符。参数名称:名称“
尝试通过
添加此内容时 request.AddCookie(a.Name, a.Value);
返回“未找到”,虽然我可以在手动访问网站时收到请求。
EDIT1。
通过处理所有cookie而不仅仅是文档中明确说明的cookie,可以进行修复。
client.CookieContainer = new CookieContainer();
foreach(RestResponseCookie a in response.Cookies){
if(a.Expires == new DateTime(0))//remove expiring cookie as stated in dat3450's answer
client.CookieContainer.Add(newCookie() {Name = a.Name, Value = a.Value, Path = a.Path, Domain = a.Domain});
}
答案 0 :(得分:1)
从上面的代码中可以看出,请求中不包含一些额外的cookie。通过JIRA API发送有效请求需要三个Cookie :
您可以在获得JSESSIONID cookie的同一位置获取这些cookie(来自有效的登录响应)。浏览回复中的所有Set-Cookie
标头,并使用studio.crowd.tokenkey
除Expires
参数以外的所有标头。
JIRA API参考页面并未真正显示有关此内容的详细信息,因此您可以在此处找到一些其他信息:https://confluence.atlassian.com/cloud/cookies-744721661.html