Отправка и получение сообщений SOAP

Один прием, который я люблю, должен использовать нащельную рейку (*) расширитель на объектах кроме Массивов. Вот пример на соответствии регулярного выражения:

match, text, number = *"Something 981".match(/([A-z]*) ([0-9]*)/)

Другие примеры включают:

a, b, c = *('A'..'Z')

Job = Struct.new(:name, :occupation)
tom = Job.new("Tom", "Developer")
name, occupation = *tom
7
задан informatik01 15 July 2013 в 20:45
поделиться

4 ответа

You can use the System.Net classes, such as HttpWebRequest and HttpWebResponse to read and write directly to an HTTP connection.

Here's a basic (off-the-cuff, not compiled, non-error-checking, grossly oversimplified) example. May not be 100% correct, but at least will give you an idea of how it works:

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create(url);
req.ContentLength = content.Length;
req.Method = "POST";
req.GetRequestStream().Write(Encoding.ASCII.GetBytes(content), 0, content.Length);
HttpWebResponse resp = (HttpWebResponse) req.getResponse();
//Read resp.GetResponseStream() and do something with it...

This approach works well. But chances are whatever you need to do can be accomplished by inheriting the existing proxy classes and overriding the members you need to have behave differently. This type of thing is best reserved for when you have no other choice, which is not very often in my experience.

3
ответ дан 7 December 2019 в 01:22
поделиться

Вы можете заставить метод веб-службы возвращать строку, содержащую xml, но примите во внимание приведенный выше комментарий о повышении вероятности ошибок.

1
ответ дан 7 December 2019 в 01:22
поделиться

Да, вы можете просто объявить входы и выходы как XmlNode

[WebMethod]
public XmlNode MyMethod(XmlNode input);
2
ответ дан 7 December 2019 в 01:22
поделиться

Вот часть реализации, которую я только что запустил, на основе примера Джона М. Ганта. Важно установить заголовок запроса типа контента. Плюс моему запросу нужны учетные данные.

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; }
}
4
ответ дан 7 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

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