Отправляйте запросы типа SOAP на веб-сервис как можно быстрее, используя c # - PullRequest
0 голосов
/ 04 сентября 2018

Я хотел бы отправить запрос как можно скорее на мой веб-сервис. Как я могу сделать это, используя мой собственный код в C #? Когда я делаю так, как этот сервер отвечает на 1 запрос около 1 секунды. Мне не нужно ждать ответа, просто хочу отправить данные. Когда я запускаю этот код несколько раз (запуск приложения 4-5), он посылает 1 на 1 друг на друга. Это займет то же время, используя только 1 приложение или 5. Что я должен сделать, чтобы отправить его на каждое работающее приложение? Может быть, это открыть 1 порт TCP и нужно открыть несколько? Но не знаю, как это сделать. Это что-то вроде Jmeter send. Но хочу сделать это по собственному коду. Любые идеи, как я могу отредактировать мой код, чтобы отправить его как можно скорее? Когда я запускаю эту программу раз, она отправляет по одному на каждый графический интерфейс. Не все в одно и то же время.

Код выглядит так:

   public static HttpWebRequest CreateWebRequest()
            {
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(@"http://ws/statusService");
                webRequest.Headers.Add(@"SOAP:Action");
                webRequest.ContentType = "text/xml;charset=\"utf-8\"";
                webRequest.Accept = "text/xml";
                webRequest.Method = "POST";
                return webRequest;
            }


 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {


            StreamReader SR = new StreamReader(@"List_of_uid.txt");
            // string[] names = System.IO.File.ReadAllLines(@"List_of_uid.txt");
            int ilosc_zamowien = names.Count();
            ilosc_zamowien = ilosc_zamowien - 1;
            SR.Close();
            int ilosc_label = ilosc_zamowien + 1;
            string zmienna;
            for (int i = 0; i <= ilosc_zamowien; i++)
            {
                Console.WriteLine(names[i]);
                // Execute();
                HttpWebRequest request = CreateWebRequest();
                XmlDocument soapEnvelopeXml = new XmlDocument();
                string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
                <soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:ws=""http://ws.om.wyrocznia.cyfrowypolsat.pl/"">
                     <soapenv:Header/>
                         <soapenv:Body>
                    <ws:processTask>
                <executorName>createAgreementEOExecutor</executorName>
                <productOrderNumber>{0}</productOrderNumber>
                <executorParams>
                  <parameters>
                 <entry>
                  <key>waitForNotification</key>
                  <value>true</value>
                       </entry>
                      </parameters>
                  </executorParams>
                    <useOldCallbackUid>true</useOldCallbackUid>
                 </ws:processTask>
                </soapenv:Body>
            </soapenv:Envelope>";


                var NewXML = String.Format(xml, names[i]);

                soapEnvelopeXml.LoadXml(NewXML);

                using (Stream stream = request.GetRequestStream())
                {
                    soapEnvelopeXml.Save(stream);
                }

                using (WebResponse response = request.GetResponse())
                {
                    using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                    {
                           string soapResult = rd.ReadToEnd();
                           Console.WriteLine(soapResult);
                    }
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...