返回值未找到或“指定的值具有无效的HTTP标头字符。参数名称:名称”

时间:2017-02-25 16:52:04

标签: c# jira restsharp

尝试获取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});
}

1 个答案:

答案 0 :(得分:1)

从上面的代码中可以看出,请求中不包含一些额外的cookie。通过JIRA API发送有效请求需要三个Cookie

  • JS​​ESSIONID
  • studio.crowd.tokenkey
  • atlassian.xsrf.token

您可以在获得JSESSIONID cookie的同一位置获取这些cookie(来自有效的登录响应)。浏览回复中的所有Set-Cookie标头,并使用studio.crowd.tokenkeyExpires参数以外的所有标头。

JIRA API参考页面并未真正显示有关此内容的详细信息,因此您可以在此处找到一些其他信息:https://confluence.atlassian.com/cloud/cookies-744721661.html