【问题标题】:Returned value is Not Found or "Specified value has invalid HTTP Header characters. Parameter name: name"返回值为 Not Found 或“指定值包含无效的 HTTP 标头字符。参数名称:名称”
【发布时间】:2017-02-27 22:42:39
【问题描述】:

试图让一个休息请求通过。我能够从推荐的方法中获取 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);

返回是“未找到”,虽然我可以在手动访问站点时收到请求。

编辑1。

可以通过处理所有 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});
}

【问题讨论】:

    标签: c# jira restsharp


    【解决方案1】:

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

    • JSESSIONID
    • studio.crowd.tokenkey
    • atlassian.xsrf.token

    您可以在获取 JSESSIONID cookie 的相同位置获取这些 cookie(来自有效的登录响应)。遍历响应中的所有 Set-Cookie 标头,并使用除带有 Expires 参数的 studio.crowd.tokenkey 之外的所有标头。

    JIRA API 参考页面并没有显示太多关于此的信息,因此您可以在此处找到一些附加信息:https://confluence.atlassian.com/cloud/cookies-744721661.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 2017-12-04
      • 2019-04-18
      • 2020-02-26
      • 2014-12-04
      • 1970-01-01
      相关资源
      最近更新 更多