理解 Soap

http://www.cnblogs.com/yhuang/archive/2012/04/04/share_storm.html

自己也写了下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyCmn;
using System.Web;
using System.Net;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var str = @"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
  <soap:Body>
    <Login xmlns=""MyServer"">
      <RequestJson>{WebName:""iudi"",Password:""iudi""}</RequestJson>
    </Login>
  </soap:Body>
</soap:Envelope>";


            HttpWebRequest request = HttpWebRequest.Create("http://udi-pc/WcfService/AndroidApp.svc") as HttpWebRequest;
            request.Method = "POST";
            request.Headers["SoapAction"] = "MyServer/AndroidApp/Login";
            request.ContentType = "text/xml; charset=utf-8";
            request.Pipelined = true;
            request.AllowAutoRedirect = true;
            request.KeepAlive = true;
            request.Headers["UseCookieContaner"] = "True";

            var rs = request.GetRequestStream();

            var ary1 = System.Text.Encoding.UTF8.GetBytes(str);
            rs.Write(ary1, 0, ary1.Length);

            var resp = request.GetResponse() as HttpWebResponse;

            using (var respStream = resp.GetResponseStream())
            {
                System.IO.BinaryReader reader = new BinaryReader(respStream);
                byte[] ary = null;
                if (resp.ContentLength <= 0)
                {
                    var listAry = new List<byte>();

                    while (true)
                    {
                        var tempAry = reader.ReadBytes(10240);
                        if (tempAry.Length == 0) break;
                        listAry.AddRange(tempAry);
                    }

                    ary = listAry.ToArray();
                }
                else
                {
                    ary = reader.ReadBytes(resp.ContentLength.AsInt());
                }

                var html = "";
                if (resp.CharacterSet.HasValue())
                {
                    html = System.Text.Encoding.GetEncoding(resp.CharacterSet).GetString(ary);
                }
                else
                {
                    html = System.Text.Encoding.Default.GetString(ary);
                }


                Console.WriteLine(html);
            }

        }
    }
}