使用 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搜索语句
apache_conf 小的ruby脚本在jira中获取jql查询(高级搜索)的结果,并为Cultured Code的Things App创建todo项目。我用