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

m1m5dgzv  于 2023-02-20  发布在  .NET
关注(0)|答案(6)|浏览(128)

我尝试从.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();

当我调试它的时候,我注意到从Chrome请求相同的URL可以工作,但是从IE就不行了。

mu0hgdu0

mu0hgdu01#

如果执行JQL搜索的用户缺少项目'XXX'的 browse project 权限,则会发生错误。如果没有该权限,Jira会将该项目视为不存在,因此它不是有效的筛选器值。
它在Chrome中为您工作,但在IE中或使用您的代码时不起作用,可能是因为您以不同的用户身份登录(例如,您的个人帐户、bot用户、匿名/未登录)。

xxhby3vn

xxhby3vn2#

JQL字符串可能相当复杂,将它们正确地编码为GET请求中的参数可能会成为一件令人头痛的事情。我建议您改用POST端点来执行**/search**。

wko9yo5t

wko9yo5t3#

该错误消息具有误导性。问题出在授权凭据上。我的代码发送了以下HTTP头:

Authorization: Token blablabla

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

Authorization: Basic blablabla
u0njafvf

u0njafvf4#

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

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

如果它工作正常,则意味着您的代码不正确。
尝试查看代码的headers,它必须具有Authorization: Basic xxxx

3yhwsihp

3yhwsihp5#

尝试使用基本的auth(用户名和密码),以电子邮件作为用户名,以您的API令牌作为密码。在Jira帐户-〉安全设置中创建API令牌

vhmi4jdf

vhmi4jdf6#

最后和无可争议的决定是设置标题Authorization: Basic <your api key>,API密钥,您可以创建在“管理配置文件---〉安全---〉创建令牌”,如果它不工作,输入您的电子邮件和api令牌在基本授权设置在 Postman ,然后从标题复制加密令牌授权与“基本”字在开始

相关问题