Дополнительно
Клиент для отправки SOAP-запроса и получения ответа
Пытаюсь создать клиента на C# (будет разработан как служба Windows), который посылает SOAP-запросы к веб-службе (и получает результаты).
Из этого вопроса я увидел такой код:
protected virtual WebRequest CreateRequest(ISoapMessage soapMessage)
{
var wr = WebRequest.Create(soapMessage.Uri);
wr.ContentType = "text/xml;charset=utf-8";
wr.ContentLength = soapMessage.ContentXml.Length;
wr.Headers.Add("SOAPAction", soapMessage.SoapAction);
wr.Credentials = soapMessage.Credentials;
wr.Method = "POST";
wr.GetRequestStream().Write(Encoding.UTF8.GetBytes(soapMessage.ContentXml), 0, soapMessage.ContentXml.Length);
return wr;
}
public interface ISoapMessage
{
string Uri { get; }
string ContentXml { get; }
string SoapAction { get; }
ICredentials Credentials { get; }
}
Выглядит красиво, кто-нибудь знает, как его использовать и является ли это лучшей практикой?
152
7
Обычно я использую другой способ, чтобы сделать то же самое
Я нашел это простое решение здесь:
Отправка SOAP-запроса и получение ответа в .NET 4.0 C# без использования WSDL или прокси-классов:.
Лучшая практика - ссылаться на WSDL и использовать его как ссылку на веб-сервис. Это проще и работает лучше, но если у вас нет WSDL, XSD-определения являются хорошим куском кода.
Я думаю, что есть более простой способ:
Я написал более общий вспомогательный класс, который принимает строку на основе словаря пользовательских параметров, так что они могут быть установлены абонентом без необходимости жестко кодировать их. Само собой разумеется, что вы должны использовать только такой метод, когда вы хотите (или необходимость), чтобы вручную проблему на основе SOAP веб-сервиса: в наиболее распространенных сценариях рекомендуемый подход будет с помощью веб-служб WSDL вместе с Добавить ссылку визуальная студия функцию вместо.
Для получения дополнительной информации и усилителя; детали, касающиеся этого класса вы также сможете прочитать этот пост]1 на моем блоге.
Так что это мой окончательный код после погуглить на 2 дня о том, как добавить пространство имен и сделать запрос SOAP вместе с мылом конверт без добавления прокси/справочная служба
Вызов SOAP веб-сервиса на C#