C#调用WebService的简单方式

使用WebRequest调用WebService 。仅适合简单的WebService服务

 

WebServiceCall
public class WebServiceCall
    {
        public void Call()
        {
            string url = "http://localhost:1117/WebSite/WebService.asmx";
            string data = GetSOAPReuquestBody("100");
           HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);            
            req.ContentType = "text/xml; charset=utf-8";
            req.Method = "POST";
            using (Stream reqStream = req.GetRequestStream())
            {
                byte[] reqData = Encoding.UTF8.GetBytes(data);
                reqStream.Write(reqData, 0, reqData.Length);
            }
             
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            Console.WriteLine(resp.StatusCode);
            foreach (var item in resp.Headers.AllKeys)
            {
                Console.WriteLine(item + " : " + resp.Headers[item]);                
            }
            using (StreamReader reader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8))
            {
                Console.WriteLine(reader.ReadToEnd());
            }

        }
        public void Call2()
        {
            string url = "http://localhost:1117/WebSite/WebService.asmx/GetNumber";
            string data = "id=3";
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method = "POST";
            using (Stream reqStream = req.GetRequestStream())
            {
                byte[] reqData = Encoding.UTF8.GetBytes(data);
                reqStream.Write(reqData, 0, reqData.Length);
            }

            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            Console.WriteLine(resp.StatusCode);
            foreach (var item in resp.Headers.AllKeys)
            {
                Console.WriteLine(item + " : " + resp.Headers[item]);
            }
            using (StreamReader reader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8))
            {
                Console.WriteLine(reader.ReadToEnd());
            }

        }

        public string GetSOAPReuquestBody(string param)
        {
            StringBuilder soap = new StringBuilder();
            soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            soap.Append("<soap12:Envelope xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">");
            soap.Append("<soap12:Body>");
            soap.Append("<GetNumber  xmlns=\"http://tempuri.org/\">");
            soap.Append("<id>");
            soap.Append(param);
            soap.Append("</id>");
            soap.Append("</GetNumber>");
            soap.Append("</soap12:Body>");
            soap.Append("</soap12:Envelope>");
            return soap.ToString();
        }
    }

 

posted @ 2012-08-11 16:27  消失的风  阅读(1989)  评论(0编辑  收藏  举报