我尝试从.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就不行了。
6条答案
按热度按时间mu0hgdu01#
如果执行JQL搜索的用户缺少项目'XXX'的 browse project 权限,则会发生错误。如果没有该权限,Jira会将该项目视为不存在,因此它不是有效的筛选器值。
它在Chrome中为您工作,但在IE中或使用您的代码时不起作用,可能是因为您以不同的用户身份登录(例如,您的个人帐户、bot用户、匿名/未登录)。
xxhby3vn2#
JQL字符串可能相当复杂,将它们正确地编码为GET请求中的参数可能会成为一件令人头痛的事情。我建议您改用POST端点来执行**/search**。
wko9yo5t3#
该错误消息具有误导性。问题出在授权凭据上。我的代码发送了以下HTTP头:
当我将标题更改为正确的形式时,它起作用了:
u0njafvf4#
您应该首先尝试使用标准
curl
来查找根本原因如果它工作正常,则意味着您的代码不正确。
尝试查看代码的
headers
,它必须具有Authorization: Basic xxxx
3yhwsihp5#
尝试使用基本的auth(用户名和密码),以电子邮件作为用户名,以您的API令牌作为密码。在Jira帐户-〉安全设置中创建API令牌
vhmi4jdf6#
最后和无可争议的决定是设置标题
Authorization: Basic <your api key>
,API密钥,您可以创建在“管理配置文件---〉安全---〉创建令牌”,如果它不工作,输入您的电子邮件和api令牌在基本授权设置在 Postman ,然后从标题复制加密令牌授权与“基本”字在开始