将JIRA API cURL转换为c#http请求

将JIRA API cURL转换为c#http请求,c#,.net,rest,api,jira,C#,.net,Rest,Api,Jira,我有一个cURL,我用它连接到Atlassian JIRA API并用JQL搜索问题,按项目名称和状态过滤问题 这是cURL命令,它工作得很好: curl -u JIRAUSER:JIRATOKEN -X POST --data '{ "jql": "project = \"QA\" AND status=\"To Do\" " }' -H "Content-Type: application/json" https://jiraserver.atlassian.net/rest/api/2/s

我有一个cURL,我用它连接到Atlassian JIRA API并用JQL搜索问题,按项目名称和状态过滤问题

这是cURL命令,它工作得很好:

curl -u JIRAUSER:JIRATOKEN -X POST --data '{ "jql": "project = \"QA\" AND status=\"To Do\" " }' -H "Content-Type: application/json" https://jiraserver.atlassian.net/rest/api/2/search
我正试图用httpclient-POST方法在c#上重新构建它。代码如下:

static async System.Threading.Tasks.Task Main(string[] args)
        {
            using (var httpClient = new HttpClient())
            {
                using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://jiraserver.atlassian.net/rest/api/2/search"))
                {
                    var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("JIRAUSER:JIRA TOKEN"));
                    request.Headers.TryAddWithoutValidation("Authorization", $"Basic {base64authorization}");

                    request.Content = new StringContent("{ \"jql\": \"project = \"QA\" AND status = \"To Do\" }");
                    request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                    var response = await httpClient.SendAsync(request);

                    Console.WriteLine(response);


                }
            }

        }
响应返回以下错误:

状态代码:400,原因短语:“”,版本:1.1,内容: System.Net.Http.HttpConnectionResponseContent

在System.Diagnostics.Debug.Write中,我得到以下错误:

错误CS0428:无法将方法组“Write”转换为非委托类型 “对象”。您是否打算调用该方法


请给我一些提示,否则我就要上吊了…

我建议使用JIRA SDK与您的JIRA实例进行交互->

基本上,一组步骤是

1) initiate jira client:

    var jiraClient = Jira.CreateRestClient(<jiraURL>, <jiraUserName>, <jiraUserPwd>);

2) connect to jira, and pull based on search criteria:

     var jql =  "project = QA + " AND status in (To Do)";
    IEnumerable<Atlassian.Jira.Issue> jiraIssues = AsyncTasker.GetIssuesFromJQL(jiraClient, jql, 999);

3) then, you can enumerate in the pulled issues

    ...
    foreach(var issue in jiraIssues)
    {   
        /*      
        ... for example, some of the available attributes are:

                    issue.Key.Value
                    issue.Summary
                    issue.Description
                    issue.Updated
                    String.Format("{0}/browse/{1}", jiraURL.TrimEnd('/') , issue.Key.Value)
        ...
        */
    }                    
1)启动jira客户端:
var jiraClient=Jira.CreateRestClient(,);
2) 连接到jira,并根据搜索条件进行拉取:
var jql=“project=QA+”和状态为(待办事项)”;
IEnumerable jiraIssues=AsyncTasker.GetIssuesFromJQL(jiraClient,jql,999);
3) 然后,你可以列举在拉问题
...
foreach(JIRAISES中的var问题)
{   
/*      
…例如,某些可用属性包括:
问题、关键、价值
问题摘要
问题.说明
问题。更新
String.Format(“{0}/browse/{1}”、jiraURL.TrimEnd('/')、issue.Key.Value)
...
*/
}                    
  • 另一方面,建议不要使用(…=newhttpclient()){…}