RakeshKadadhi Ответов: 1

Как отправить веб-запрос в очередь в приложении c# windows


Я сделал приложение для запуска веб-запроса из оконного приложения и забыл,значит, не дожидаясь ответа.

string url1 = APIUrl + "/SendNotification";
                string url2 = Url + "/SendSOA";

                ASCIIEncoding encoding = new ASCIIEncoding();
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url1);
                request.Method = "Post";
                request.ContentLength = 0;
                request.ContentType = "application/json";
                request.GetResponseAsync(); //Mohan: Method will not wait for response just trigger and forget

                ASCIIEncoding encoding1 = new ASCIIEncoding();
                HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(url2);
                request1.Method = "Post";
                request1.ContentLength = 0;
                request1.ContentType = "application/json";
                request1.GetResponseAsync(); //Mohan: Method will not wait for response just trigger and forget


но когда я пытаюсь сделать это по URL-адресу локального хоста, я вижу, что эти два метода запущены, поэтому я хочу отправить запрос в очередь, тогда он завершит первый запрос, а затем завершит второй запрос.

значит, пока один запрос не будет выполнен, второй должен стоять в очереди.
пожалуйста, помогите мне сделать это.

заранее спасибо.

Что я уже пробовал:

Я только что попробовал это сделать, но это не работает

string APIUrl = ConfigurationManager.AppSettings["APIUrl"].ToString();
                string Url = ConfigurationManager.AppSettings["Url"].ToString();

                Queue httprequest = new Queue();
                string url1 = APIUrl + "/SendNotification";
                string url2 = Url + "/SendSOA";

                ASCIIEncoding encoding = new ASCIIEncoding();
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url1);
                request.Method = "Post";
                request.ContentLength = 0;
                request.ContentType = "application/json";
                httprequest.Enqueue(request);
                request.GetResponseAsync(); //Mohan: Method will not wait for response just trigger and forget

                ASCIIEncoding encoding1 = new ASCIIEncoding();
                HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(url2);
                request1.Method = "Post";
                request1.ContentLength = 0;
                request1.ContentType = "application/json";
                httprequest.Enqueue(request1);
                request1.GetResponseAsync(); //Mohan: Method will not wait for response just trigger and forget

1 Ответов

Рейтинг:
11

RakeshKadadhi

Этот код прекрасно работает для меня.

string url1 = APIUrl + "/SendNotification";
        string url2 = Url + "/SendSOA";

        ASCIIEncoding encoding = new ASCIIEncoding();
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url1);
        request.Method = "Post";
        request.ContentLength = 0;
        request.ContentType = "application/json";
        var firstTask = request.GetResponseAsync();

        firstTask.ContinueWith(_ => {
            ASCIIEncoding encoding1 = new ASCIIEncoding();
            HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(url2);
            request1.Method = "Post";
            request1.ContentLength = 0;
            request1.ContentType = "application/json";
            request1.GetResponseAsync(); //Mohan: Method will not wait for response just trigger and forget
        });