2011-06-08 90 views
1

我需要创建xml消息并将其发送到Web服务。然后,我应该通过查看来自服务的响应xml来处理响应。我之前使用过WCF,但我应该用旧式做。在.NET中使用HTTP请求响应消费Web服务?

我应该从哪里开始?

在此先感谢。

+3

你为什么试图做到这一点很难? – 2011-06-08 07:53:46

+0

这就是我的老板想让我作为初级开发人员做的事情。 – 2011-06-08 07:56:35

+0

你的老板肯定不希望你通过做手工HttpWebRequest的周围所有的东西调用服务。如果他想,他是......按照他以前的方式,他最有可能意味着ASMX客户端=添加Web引用。 – 2011-06-08 07:58:44

回答

1

如果你不想使用WCF/ASMX客户,你应该开始通过学习HTTP和SOAP(1.11.2)了解POST请求和信息建设和阅读+ HttpWebRequest需要的HTTP标头。这样做是没有意义的 - 坚持WCF或ASMX(这实际上是旧的方式)。

2

下面是一些基本的C#代码,你想要做什么,其中URL是你调用Web服务的URL,行动是服务的SOAP动作和信封是一个包含请求SOAP信封的字符串:

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; 
}