使用 JQL 执行搜索时,Jira REST 错误“字段 'project' 的值 'XXX' 不存在。”]

Posted

技术标签:

【中文标题】使用 JQL 执行搜索时,Jira REST 错误“字段 \'project\' 的值 \'XXX\' 不存在。”]【英文标题】:Jira REST error "The value 'XXX' does not exist for the field 'project'."] while performing search with JQL使用 JQL 执行搜索时,Jira REST 错误“字段 'project' 的值 'XXX' 不存在。”] 【发布时间】:2017-01-03 04:32:03 【问题描述】:

我正在尝试从 .Net 调用 Jira REST API(项目中的查询问题),但出现上述 HTTP 400 错误。

这就是我打电话的方式:

using System.Net;
var jiraRequest = HttpWebRequest.CreateHttp("https://example.com/rest/api/latest/search?jql=project=projectname");
jiraRequest.Credentials = new NetworkCredential(username, password);
var response = (HttpWebResponse)jiraRequest.GetResponse();

当我调试它时,a 注意到从 Chrome 请求相同的 URL 有效,但从 IE 却没有。 有什么想法吗?

【问题讨论】:

【参考方案1】:

如果执行 JQL 搜索的用户缺少项目“XXX”的浏览项目权限,则会出现该错误。 如果没有该权限,Jira 会将项目视为不存在,因此它不是有效的过滤器值。

它在 Chrome 中对您有效,但在 IE 中或使用您的代码时无效,可能是因为您以不同的用户身份登录(例如您的个人帐户、机器人用户、匿名/未登录)。

【讨论】:

【参考方案2】:

JQL 字符串可能非常复杂,将它们正确编码为 GET 请求中的参数可能会让人头疼。 我建议您改为切换到 /search 的 POST 端点。

【讨论】:

【参考方案3】:

该错误消息具有误导性。问题在于授权凭据。我的代码正在发送这个 HTTP 标头:

Authorization: Token blablabla

当我将标题更改为正确的形式时,它起作用了:

Authorization: Basic blablabla

【讨论】:

【参考方案4】:

您应该首先尝试使用标准 curl 找到根本原因

curl -D- -u USER:PASSWORD -X GET -H "Content-Type: application/json" URL

如果运行正常,则说明您的代码不正确。

尝试查看您的代码的headers,它必须有Authorization: Basic xxxx

【讨论】:

以上是关于使用 JQL 执行搜索时,Jira REST 错误“字段 'project' 的值 'XXX' 不存在。”]的主要内容,如果未能解决你的问题,请参考以下文章

{Jira Query Language简称JQL}Jira中最常用的JQL搜索语句

JIRA REST API cors

apache_conf 小的ruby脚本在jira中获取jql查询(高级搜索)的结果,并为Cultured Code的Things App创建todo项目。我用

JIRA JQL 的使用

如何使用 JIRA REST API 将 JIRA Agile 问题分配给当前用户的当前 sprint?

JIRA JQL:按阻塞状态着色卡片