我的目标是使用Jira REST API来创建问题。但是到目前为止,我遇到了错误(405)不允许的方法。
我已经检查了Jira属性是否已打开Jira远程API。 下:
JIRA配置>常规配置>允许远程API调用已启用。
我还检查了提交的JSON字符串,对我来说不错:
"{\"fields\":{\"project\":{\"key\":\"CTTS\"},\"summary\":\"Api Test\",\"description\":\"Test\",\"issuetype\":{\"name\":\"Story\"}}}"
我当前调用该API的代码如下:
public JiraApiResponseObject CreateRequest(JSONstring)
{
jiraRequest = (HttpWebRequest)WebRequest.Create("https://MyJiraUrl.net/rest/api/2/issue");
jiraRequest.Method = "POST";
jiraRequest.ContentType = "application/json";
jiraRequest.Accept = "application/json";
using (var streamWriter = new StreamWriter(jiraRequest.GetRequestStream()))
{
streamWriter.Write(JSONstring);
streamWriter.Flush();
}
HttpWebResponse response = (HttpWebResponse)jiraRequest.GetResponse();
return jiraReturnObject;
}
我目前不知道是什么原因导致了错误。当我实际上希望获得API响应时,我只是从远程服务器收到(405)不允许的方法错误。
答案 0 :(得分:1)
WebRequest中缺少授权标头。 Jira需要这样的标头,以确认只有授权用户才能访问API。
此授权字符串的构建如下:
"Basic username:api_token"
api_token可以在Jira Cloud中生成,并且需要进行base64编码。
这就是我要做的:
例如,字符串fred:fred在base64中编码为ZnJlZDpmcmVk,因此您可以在请求中添加以下内容:
jiraRequest.Headers["Authorization"] = "Basic " + "UserName" + Base64Encode(apiToken);