如何正确拨打吉拉REST API

问题描述 投票:0回答:1

我一直在试图建立一个函数来调用吉拉REST API与参数,然后就可以在JIRA中创建一个问题。要调用REST API吉拉提供介绍如何调用REST API here一个文档。在网站上,卷曲和JSON中给出。这里是我试图建立在C#的REST API请求:

curl -D- -u peno.ch:yourpassword -H "Content-Type: application/json" --data @foo.json https://jira-test.ch.*******.net/rest/api/latest/issue/

这是foo.json有效载荷:

{
    "fields": {
   "project":
   {
      "key": "FOO"
   },
   "summary": "Test the REST API",
   "issuetype": {
      "name": "Task"
   }
  }
 }

我试图实现一个HttpWebRequest调用REST API,也是我有一个WebClient尝试。他们没有工作。我有点明白了API,但我觉得我还没有得到正确的参数,我想我做的事情错了。同样在谷歌,我没有找到任何解决方案。

我从吉拉执行以下功能时得到一个内部错误。 (有关该错误没有特定信息)

public static void CreateJiraRequest(JiraApiObject jiraApiObject)
{
    string url = "https://jira-test.ch.*******.net/rest/api/latest/issue/";
    string user = "peno.ch";
    string password = "****";

    var client = new WebClient();        
    string data = JsonConvert.SerializeObject(jiraApiObject);
    client.Credentials = new System.Net.NetworkCredential(user, password);
    client.UploadStringTaskAsync(url, data);
}

这是我的JiraApiObject这正好转换为上面显示JSON的有效载荷。

public class JiraApiObject
{
    public class Project
    {
        public string key { get; set; }
    }

    public class Issuetype
    {
        public string name { get; set; }
    }

    public class Fields
    {
        public Project project { get; set; }
        public Issuetype issuetype { get; set; }
        public string summary { get; set; }
    }

    public class RootObject
    {
        public Fields fields { get; set; }
    }
}

当我在控制台上的一切执行curl命令的作品我只是无法弄清楚如何构建WebClientHttpWebRequest

我发现许多用户吉拉面对这个问题并没有一个很好的解决方案,我可以在互联网上找到。我希望能找到一个解决方案,并通过提高这个问题,帮助别人谁也有同样问题。

c# asp.net rest jira-rest-api
1个回答
2
投票

在一般情况下,它的最佳实践(很多需要一个次)明确指定的内容类型,HTTP方法,等等,只要你做一个REST API调用。此外,我更喜欢使用HttpWebRequest对象进行REST API调用。这里是重新分解代码:

public static void CreateJiraRequest(Chat jiraApiObject)
{
    string url = "https://jira-test.ch.*******.net/rest/api/latest/issue/";
    string user = "peno.ch";
    string password = "****";

    var request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "POST";
    request.ContentType = "application/json";
    request.Credentials = new System.Net.NetworkCredential(user, password);

    string data = JsonConvert.SerializeObject(jiraApiObject);

    using (var webStream = request.GetRequestStream())
    using (var requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII))
    {
        requestWriter.Write(data);
    }

    try
    {
        var webResponse = request.GetResponse();
        using (var responseReader = new StreamReader(webResponse.GetResponseStream()))
        {
            string response = responseReader.ReadToEnd();
            // Do what you need to do with the response here.
        }
    }
    catch (Exception ex)
    {
        // Handle your exception here
        throw ex;
    }
}

此外,确保连载JiraApiObject后的JSON结构有问题的API的要求JSON结构相匹配。为了您的方便,你可能想使你的名字他们预计API的方式考虑使用的JSONObject和JsonProperty的类和属性属性。

© www.soinside.com 2019 - 2024. All rights reserved.