Использование веб-службы с ответом на запрос http в .NET? - PullRequest
1 голос
/ 08 июня 2011

Мне нужно создать XML-сообщение и отправить его в веб-службу.Затем я должен обработать ответ, посмотрев ответ xml, который приходит из сервиса.Я использовал WCF раньше, но я должен делать это в старом стиле.

С чего мне начать?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 08 июня 2011

Вот некоторый базовый код C #, который делает то, что вам нужно, где url - это URL-адрес вызываемого веб-сервиса, action - это мыльное действие сервиса, а envelope - строка, содержащая мыльный конверт для запроса:

WebRequest request = CreateHttpRequestFromSoapEnvelope(url, action, envelope);
WebResponse response = request.GetResponse();

private WebRequest CreateHttpRequestFromSoapEnvelope(string url, string action, string envelope)
{
    WebRequest request = WebRequest.Create(new Uri(url));
    request.Method = "POST";
    request.ContentType = "text/xml";
    request.Headers.Add(action);
    ServicePointManager.Expect100Continue = false;

    ApplyProxyIfRequired(request);

    using (Stream stream = request.GetRequestStream())
    {
        using (StreamWriter streamWriter = new StreamWriter(stream))
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            builder.Append(envelope);
            string message = builder.ToString();
            streamWriter.Write(message);
        }
    }

    return request;
}
1 голос
/ 08 июня 2011

Если вы не хотите использовать клиенты WCF / ASMX, вам следует начать с изучения HTTP и SOAP ( 1.1 , 1.2 ), чтобы понять необходимый HTTPЗаголовки для запросов POST и построения и чтения сообщений + HttpWebRequest .Делать так не имеет смысла - придерживайтесь WCF или ASMX (это на самом деле старый способ).

0 голосов
/ 08 июня 2011

Добавить ссылку на веб-сервис.Visual Studio создаст для вас классы, так что вам не нужно будет создавать XML-запрос и анализировать XML-ответ самостоятельно.
Проверьте эту ссылку http://msdn.microsoft.com/en-us/library/d9w023sx(v=VS.90).aspx

...