我正在尝试从.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它没有。 有什么想法吗?
答案 0 :(得分:0)
JQL字符串可能非常复杂,并且将它们正确编码为GET请求中的参数可能会变得令人头疼。 我建议您切换到 / search 的POST端点。
答案 1 :(得分:0)
该错误消息具有误导性。问题在于授权凭据。我的代码是发送此HTTP标头:
Authorization: Token blablabla
当我将标题更改为正确的格式时,它有效:
Authorization: Basic blablabla
答案 2 :(得分:0)
您应首先尝试使用标准curl
curl -D- -u USER:PASSWORD -X GET -H "Content-Type: application/json" URL
如果工作正常,则表示您的代码不正确。
尝试查看代码的headers
,它必须有Authorization: Basic xxxx
答案 3 :(得分:0)
如果执行JQL搜索的用户缺少对项目“ XXX”的浏览项目权限,则会发生错误。 未经该许可,Jira会将项目视为不存在,因此它不是有效的过滤器值。
它在Chrome中对您有效,但在IE或使用您的代码中不起作用,可能是因为您以其他用户身份登录(例如,您的个人帐户,机器人用户,匿名/未登录)。