我试图从.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它没有。有任何想法吗?
JQL字符串可能非常复杂,并且将它们正确编码为GET请求中的参数可能会变得令人头疼。我建议您切换到/ search的POST端点。
该错误消息具有误导性。问题在于授权凭据。我的代码是发送此HTTP标头:
Authorization: Token blablabla
当我将标题更改为正确的形式时,它工作:
Authorization: Basic blablabla
你应该首先尝试使用标准的curl
找到根本原因
curl -D- -u USER:PASSWORD -X GET -H "Content-Type: application/json" URL
如果它工作正常,则表示您的代码不正确。
试着看你的代码的headers
,它必须有Authorization: Basic xxxx