C# Jira API返回后(405)方法不允许

C# Jira API返回后(405)方法不允许,c#,rest,jira,C#,Rest,Jira,我似乎不明白为什么会收到405“methodnotallowed”错误消息 我想在我的项目中创建一个新问题,关键是“BS”。我直接从Jira文档中复制/粘贴了它,但仍然无法使其正常工作 我已经尝试了很多不同类型的字符串方差,但这一种应该有效。是不是别的什么东西让我犯了这个错误 这是我的密码: string stringData = @"{""fields"": {""project"":{""key"": ""BS""},""summary"": ""REST ye merry

我似乎不明白为什么会收到405“methodnotallowed”错误消息

我想在我的项目中创建一个新问题,关键是“BS”。我直接从Jira文档中复制/粘贴了它,但仍然无法使其正常工作

我已经尝试了很多不同类型的字符串方差,但这一种应该有效。是不是别的什么东西让我犯了这个错误

这是我的密码:

        string stringData = @"{""fields"": {""project"":{""key"": ""BS""},""summary"": ""REST ye merry gentlemen."",""issuetype"": {""name"": ""Ticket""}}}";


            string url = @"http://HOST.atlassian.net/rest/api/2/issue";

            var data = Encoding.ASCII.GetBytes(stringData); // or UTF8

            WebRequest wrUrl = WebRequest.Create(url);
            wrUrl.ContentType = "application/json";
            wrUrl.Method = "POST";
            wrUrl.Headers["Authorization"] = "Basic " + Convert
                .ToBase64String(Encoding.ASCII.GetBytes(Username+":"+Password));
            wrUrl.ContentLength = data.Length;

            var newStream = wrUrl.GetRequestStream();

            newStream.Write(data, 0, data.Length);
            newStream.Close();

            Console.WriteLine(wrUrl.GetResponse().ToString());
            Console.ReadKey();
using System;
using RestSharp;
using RestSharp.Authenticators;

public class Program
{
    //This gets meta tags for the SS project and issue type "Ticket"
    // https://HOST.atlassian.net/rest/api/2/issue/createmeta?projectKeys=SS&issuetypeNames=Ticket&expand=projects.issuetypes.fields

    public static string url = "https://HOST.atlassian.net/rest/api/2/issue";
    public static string username = "YOURUSERNAME";
    public static string password = "YOURAPIKEY";



    //host:port/context/rest/api-name/api-version/resource-name
    static void Main(string[] args)
    {
        var fieldPriority = "Low";
        var fieldSubject = "Payment Problem";
        var fieldTechResource = "BLAH";
        NewJiraIssue(fieldSubject,fieldPriority, fieldTechResource);





    }

    //*****************************************
    //        Create a new Jira Issue
    //*****************************************
    //INPUT:             OUT: New Ticket Number
    //*****************************************
    static void NewJiraIssue(string fieldSubject, string fieldPriority, string fieldTechResource)
    {
        try
        {
            var client = new RestClient("https://HOST.atlassian.net/rest/api/latest/issue");
var request = new RestRequest(Method.POST);
request.AddHeader("Postman-Token", "ad6dbffb-89fe-4b21-b59a-0dc60724510f");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Authorization", "Basic 
KEY FROM ");                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
request.AddHeader("Content-Type", "application/json");                                                                                                                                                                                                                                                                                            
//Created Date                                                                                                                                                                                                                                                        
//Date CR Is approved internal                                   //Customer Approval 
Sent Date                                        //Customer Approval Date:                                           
//Planned UAT Completion Date:                                      //Actual Delivery 
Date to UAT:                                                                                                                                                                                                                                                                                                                          
            request.AddParameter("undefined", "{\r\n    \"fields\": {\r\n       
\"project\":\r\n       {\r\n          \"key\": \"SS\",\r\n           \"id\": 
\"10040\"\r\n       },\r\n       \"summary\": \""+fieldSubject+"\",\r\n       \r\n       
\"issuetype\": {\r\n          \"name\": \"Ticket\"\r\n       },\r\n       
\"customfield_10042\" : \"2010-03-01T00:00:00.000+0400\",\r\n       
\"customfield_10043\" : \"customfield_10043\",\r\n\r\n       \"customfield_10067\" :  
\"customfield_10067\",\r\n       \"customfield_10068\" : 
\"customfield_10068\",\r\n\r\n       \"customfield_10070\" : \"2001-03- 
01T00:00:00.000+0400\",\r\n       \"customfield_10071\" : \"2002-03- 
01T00:00:00.000+0400\",\r\n       \"customfield_10072\" : \"2003-03- 
01T00:00:00.000+0400\",\r\n       \"customfield_10073\" : \"2004-03- 
01T00:00:00.000+0400\",\r\n       \"customfield_10074\" : \"2005-03- 
01T00:00:00.000+0400\",\r\n       \r\n       \"priority\": {\"name\": \"" + 
 fieldPriority + "\"},\r\n       \"customfield_10069\":  {\"name\" : \"" + 
fieldTechResource + "\"}\r\n}\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
            Console.WriteLine(response.Content);
            Console.ReadKey();
        }

        catch (Exception ex)
        {
            Console.WriteLine(ex);
            Console.ReadKey();
        }
    }

1-尝试HTTPS

2-你有写范围吗

3-响应返回的内容是什么


4-“您必须为父字段提供父问题的ID或密钥。”

因此,对于任何有类似问题的人,我想留下这个答案,以说明我是如何解决的

首先,我放弃了整个项目,转而使用RestSharp进行连接。我使用Postman测试我的json,直到我得到正确的结果。Postman可以选择将JSON转换为C#请求,下面是我的代码:

        string stringData = @"{""fields"": {""project"":{""key"": ""BS""},""summary"": ""REST ye merry gentlemen."",""issuetype"": {""name"": ""Ticket""}}}";


            string url = @"http://HOST.atlassian.net/rest/api/2/issue";

            var data = Encoding.ASCII.GetBytes(stringData); // or UTF8

            WebRequest wrUrl = WebRequest.Create(url);
            wrUrl.ContentType = "application/json";
            wrUrl.Method = "POST";
            wrUrl.Headers["Authorization"] = "Basic " + Convert
                .ToBase64String(Encoding.ASCII.GetBytes(Username+":"+Password));
            wrUrl.ContentLength = data.Length;

            var newStream = wrUrl.GetRequestStream();

            newStream.Write(data, 0, data.Length);
            newStream.Close();

            Console.WriteLine(wrUrl.GetResponse().ToString());
            Console.ReadKey();
using System;
using RestSharp;
using RestSharp.Authenticators;

public class Program
{
    //This gets meta tags for the SS project and issue type "Ticket"
    // https://HOST.atlassian.net/rest/api/2/issue/createmeta?projectKeys=SS&issuetypeNames=Ticket&expand=projects.issuetypes.fields

    public static string url = "https://HOST.atlassian.net/rest/api/2/issue";
    public static string username = "YOURUSERNAME";
    public static string password = "YOURAPIKEY";



    //host:port/context/rest/api-name/api-version/resource-name
    static void Main(string[] args)
    {
        var fieldPriority = "Low";
        var fieldSubject = "Payment Problem";
        var fieldTechResource = "BLAH";
        NewJiraIssue(fieldSubject,fieldPriority, fieldTechResource);





    }

    //*****************************************
    //        Create a new Jira Issue
    //*****************************************
    //INPUT:             OUT: New Ticket Number
    //*****************************************
    static void NewJiraIssue(string fieldSubject, string fieldPriority, string fieldTechResource)
    {
        try
        {
            var client = new RestClient("https://HOST.atlassian.net/rest/api/latest/issue");
var request = new RestRequest(Method.POST);
request.AddHeader("Postman-Token", "ad6dbffb-89fe-4b21-b59a-0dc60724510f");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Authorization", "Basic 
KEY FROM ");                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
request.AddHeader("Content-Type", "application/json");                                                                                                                                                                                                                                                                                            
//Created Date                                                                                                                                                                                                                                                        
//Date CR Is approved internal                                   //Customer Approval 
Sent Date                                        //Customer Approval Date:                                           
//Planned UAT Completion Date:                                      //Actual Delivery 
Date to UAT:                                                                                                                                                                                                                                                                                                                          
            request.AddParameter("undefined", "{\r\n    \"fields\": {\r\n       
\"project\":\r\n       {\r\n          \"key\": \"SS\",\r\n           \"id\": 
\"10040\"\r\n       },\r\n       \"summary\": \""+fieldSubject+"\",\r\n       \r\n       
\"issuetype\": {\r\n          \"name\": \"Ticket\"\r\n       },\r\n       
\"customfield_10042\" : \"2010-03-01T00:00:00.000+0400\",\r\n       
\"customfield_10043\" : \"customfield_10043\",\r\n\r\n       \"customfield_10067\" :  
\"customfield_10067\",\r\n       \"customfield_10068\" : 
\"customfield_10068\",\r\n\r\n       \"customfield_10070\" : \"2001-03- 
01T00:00:00.000+0400\",\r\n       \"customfield_10071\" : \"2002-03- 
01T00:00:00.000+0400\",\r\n       \"customfield_10072\" : \"2003-03- 
01T00:00:00.000+0400\",\r\n       \"customfield_10073\" : \"2004-03- 
01T00:00:00.000+0400\",\r\n       \"customfield_10074\" : \"2005-03- 
01T00:00:00.000+0400\",\r\n       \r\n       \"priority\": {\"name\": \"" + 
 fieldPriority + "\"},\r\n       \"customfield_10069\":  {\"name\" : \"" + 
fieldTechResource + "\"}\r\n}\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
            Console.WriteLine(response.Content);
            Console.ReadKey();
        }

        catch (Exception ex)
        {
            Console.WriteLine(ex);
            Console.ReadKey();
        }
    }

请向我们指出JIRA文档。只需确保您调用了正确的端点,即正确的页面/类和方法。e、 g.如果我们在服务器中有一个名为“Calculations”的页面/类,该页面/类有两个方法,包括“Add”、“Subtract”、“Divide”,e.t.c.,并且您想要调用“Add”方法,那么您将调用端点“domain:/Calculations/Add”,包括要添加到数据json中的数字。