理解 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);
            }

        }
    }
}
复制代码

 

posted @   NewSea  阅读(309)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示