Объект SOAP по HTTP отправляет в.NET C#

Ваш блок делает файловый ввод-вывод? Если так, необходимо дать разрешение блока делать это. В SSMS:

  1. Расширяются, "Базы данных"
  2. Расширяются, узел для Вашей базы данных
  3. Расширяются, "Программируемость"
  4. Расширяются, "блоки"
  5. Щелкают правой кнопкой по Вашему блоку, выбирают Properties
  6. On страница "General", изменяют "Набор полномочий" на "Внешний доступ"
12
задан AaronTjong 25 November 2009 в 18:27
поделиться

1 ответ

Сначала вам нужно создать действительный XML. Для этого я использую Linq to XML, например:

XNamespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
var document = new XDocument(
               new XDeclaration("1.0", "utf-8", String.Empty),
               new XElement(soapenv + "Envelope",
                   new XAttribute(XNamespace.Xmlns + "soapenv", soapenv),
                   new XElement(soapenv + "Header",
                       new XElement(soapenv + "AnyOptionalHeader",
                           new XAttribute("AnyOptionalAttribute", "false"),
                       )
                   ),
                   new XElement(soapenv + "Body",
                       new XElement(soapenv + "MyMethodName",
                            new XAttribute("AnyAttributeOrElement", "Whatever")
                       )
                   )
                );

Затем я отправляю его, используя ( EDIT : добавлено XDocument.ToString () здесь.)

            var req = WebRequest.Create(uri);
            req.Timeout = 300000;  //timeout
            req.Method = "POST";
            req.ContentType = "text/xml;charset=UTF-8";

            using (var writer = new StreamWriter(req.GetRequestStream()))
            {
                writer.WriteLine(document.ToString());
                writer.Close();
            }

Если я я должен прочитать ответ (это продолжение приведенного выше кода):

            using (var rsp = req.GetResponse())
            {
                req.GetRequestStream().Close();
                if (rsp != null)
                {
                    using (var answerReader = 
                                new StreamReader(rsp.GetResponseStream()))
                    {
                        var readString = answerReader.ReadToEnd();
                        //do whatever you want with it
                    }
                }
            }
15
ответ дан 2 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: