WebRequest asyn c asp. net - mvc - PullRequest
       25

WebRequest asyn c asp. net - mvc

0 голосов
/ 26 февраля 2020

Я использую код, чтобы получить данные из Atlassian Jira и поместить данные из ответа в контейнер, как я могу сделать этот метод асинхронным? Я пробовал различные методы с веб-запросом, но все они указывают на ошибку в коде, возможно, я не понимаю, как это работает вообще. Вы можете предложить документацию или указать в коде, что я могу сделать с асинхронностью для такого запроса.

 public IEnumerable<JiraDataModel> GetData(string dateFrom, string dateTo)
        {
            int allTicketsCount = 0;
            int devTicketsCount = 0;
            int slaTicketsCount = 0;

            List<JiraRequestUrl> urlArray = new List<JiraRequestUrl>();
urlArray.AddRange(new List<JiraRequestUrl>

        {
            new JiraRequestUrl{type = "all", //*data*//},
            new JiraRequestUrl(){type = "dev",//*data*//});

            try
        {
            foreach (JiraRequestUrl u in urlArray)
            {
                WebRequest request = WebRequest.Create(_jiraUrl + u.url);
                request.ContentType = "application/json; charset=utf-8";
                request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(_credentials)));
                request.Headers.Add("maxResults", "100");

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
                    JiraGetDataModel.RootObject DeserializedResponse = (JiraGetDataModel.RootObject)JsonConvert.DeserializeObject(responseString, typeof(JiraGetDataModel.RootObject));

                    if (u.type.Equals("all"))
                    {
                        allTicketsCount = DeserializedResponse.total;
                    }
                    if (u.type.Equals("dev"))
                    {
                        devTicketsCount = DeserializedResponse.total;
                    }
                }
            }

1 Ответ

0 голосов
/ 02 марта 2020

извините, я не совсем понял, что я не вставлял свои попытки использовать asyn c, я сделал это, и, похоже, работает, могу ли я что-то улучшить в своем коде? добавлено 2 строки

  public async Task<IEnumerable<JiraDataModel>> GetData(string dateFrom, string dateTo)
        {
            int allTicketsCount = 0;
            int devTicketsCount = 0;
            int slaTicketsCount = 0;

            List<JiraRequestUrl> urlArray = new List<JiraRequestUrl>();

            urlArray.AddRange(new List<JiraRequestUrl>
        {
            new JiraRequestUrl{type = "all", //*data*//},
            new JiraRequestUrl(){type = "dev",//*data*//});

            try
        {
            foreach (JiraRequestUrl u in urlArray)
            {
                WebRequest request = WebRequest.Create(_jiraUrl + u.url);
                request.ContentType = "application/json; charset=utf-8";
                request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(_credentials)));
                request.Headers.Add("maxResults", "100");

                HttpWebResponse response = (HttpWebResponse)(await request.GetResponseAsync()request.GetResponse();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
                    JiraGetDataModel.RootObject DeserializedResponse = (JiraGetDataModel.RootObject)JsonConvert.DeserializeObject(responseString, typeof(JiraGetDataModel.RootObject));

                    if (u.type.Equals("all"))
                    {
                        allTicketsCount = DeserializedResponse.total;
                    }
                    if (u.type.Equals("dev"))
                    {
                        devTicketsCount = DeserializedResponse.total;
                    }
                }
            }
...