powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / С# выполнение SOAP напрямую
2 сообщений из 2, страница 1 из 1
С# выполнение SOAP напрямую
    #38802587
Фотография windrider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вебсервис и клиент наследованный от SoapHttpClientProtocol.
И клиент и сервис работают, клиент подключается к сервису, производя с ним обмен данными.
Появилась необходимость вызвать метод вебсервиса напрямую.
Как это сделать?

Есть xml, которую получил в SoapUI.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.moscow.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:ConnectToScheme>
         <!--Optional:-->
         <ser:login>1</ser:login>
         <!--Optional:-->
         <ser:pwd>1</ser:pwd>
      </ser:ConnectToScheme>
   </soapenv:Body>
</soapenv:Envelope>



Выполнение запроса в SoapUI возвращает ответ

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <ConnectToSchemeResponse xmlns="http://services.moscow.com/">
         <ConnectToSchemeResult>false</ConnectToSchemeResult>
         <errStr>Ошибка при подключении к схеме: Пользователь 1 не найден</errStr>
      </ConnectToSchemeResponse>
   </soap:Body>
</soap:Envelope>



Собственно вопрос. Как используя стандартные компоненты C# отправить этот запрос с вызовом метода вебсервиса и получить такой ответ? Пробовал через HttpWebRequest, но при вызове возникает ошибка 500, соответственно метод сервиса не вызывается.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var doc = new XmlDocument();
            doc.Load("request.xml"); // тот замый запрос, взятый из SoapUI
            var request = (HttpWebRequest)WebRequest.Create("http://localhost:4690/Webservice_Moscow/PlaningService.asmx");
            request.Accept = "text/xml";
            request.Method = "POST";
            request.Headers.Add("SOAPAction: 'http://services.moscow.com/ConnectToScheme'");
            request.ProtocolVersion = HttpVersion.Version11;
            request.Credentials=CredentialCache.DefaultCredentials;

            using (Stream srtm = request.GetRequestStream())
            {
                using (var stmw = new StreamWriter(srtm))
                {
                    stmw.Write(doc.InnerXml);
                }
            }

            var response = request.GetResponse();
...
Рейтинг: 0 / 0
С# выполнение SOAP напрямую
    #38802677
Фотография windrider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, проблема решилась сама собой.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / С# выполнение SOAP напрямую
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]