POST XML-запрос к веб-службе и получение ответа - PullRequest
0 голосов
/ 26 мая 2019

Я новичок и пытаюсь понять Отправка XML-запроса в веб-службу и получение ответа обратно. этот мой код, с которым я столкнулся после того, как сделал некоторое чтение и исследование, но все еще не повезло, и код не работает, как ожидалось, и URL, пытающийся вызвать возвращение No XML was recieved in HTTP POST. Может кто-нибудь помочь мне или указать мне правильное направление! заранее спасибо

Я пытаюсь прочитать XML-файлы из Каталога, а затем отправлять сообщения по URL.

public class OrderRequest
    {
        private const string URL = "https://sitename/xml/xmlOrder/";

        private static void Main(string[] args)
        {
            Console.WriteLine("Starting..");
            var sourcePath = ".";

            while (true)
            {

                var directory = new DirectoryInfo(sourcePath);
                var files = directory.GetFiles("*.xml");

                if (files.Any())
                {
                    Console.WriteLine(files.Count() + " files found!");

                }

                foreach (var file in files)
                {
                    sourcePath = ".";
                    var RequestText = string.Empty;

                    try
                    {
                        Console.WriteLine("File: " + file.Name);

                        var responseText = string.Empty;
                        using (FileStream fs = file.OpenRead())
                        {
                            XmlDocument doc = new XmlDocument();
                            doc.Load(fs);
                            string xmlData = doc.InnerXml;
                            RequestText = xmlData;

                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }
        }

        private static void CreateOrder(string orderRequestXml)
        {
            try
            {
                if (string.IsNullOrEmpty(orderRequestXml))
                {
                    throw new ArgumentException("XML data cannot be empty");
                }

                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(URL);
                webRequest.ContentType = "text/xml; encoding='utf-8'";
                webRequest.Method = "POST";

                byte[] data = Encoding.UTF8.GetBytes(orderRequestXml);

                using (Stream webStream = webRequest.GetRequestStream())
                {
                    webStream.Write(data, 0, data.Length);
                }

                using (HttpWebResponse webResponse = webRequest.GetResponse() as HttpWebResponse)
                {
                    if (webResponse.StatusCode == HttpStatusCode.OK)
                        Console.WriteLine("\r\nResponse Status Code is Ok and StatusDes is {0}", webResponse.StatusDescription);

                    using (Stream responseStream = webResponse.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(responseStream))
                        {
                            string xmlResponseString = reader.ReadToEnd();

                            XmlDocument xDoc = new XmlDocument();
                            xDoc.LoadXml(xmlResponseString);

                            Console.WriteLine(xmlResponseString);

                        }
                    }
                }

            }

            catch (WebException ex)
            {
                Console.WriteLine("\r\nWebException Raised. the following error occured : {0}", ex.Status);

            }

            catch (Exception ex)
            {

                Console.WriteLine("\nThe following Exception was raised : {0}", ex.Message);
            }

        }
    }
...