asp.net 服务端代码以 xml utf-8的格式向指定地址post 数据并接收返回值 HttpWebRequest

==============================
======发送时代码==============
============================== 
==asp.net 服务端代码以 xml utf-8的格式向指定地址post 数据并接收返回值 HttpWebRequest
protected void btn_Click(object sender, EventArgs e)
        {
            
            XmlDocument xd = GetXmlData();
            string postData = xd.InnerXml;               
            
            string a = WebHttpRequest("POST",txtSendMsgUrl.Text, postData);


            try
            {
                XmlDocument docr = new XmlDocument();
                docr.LoadXml(a);
                XmlNode node1 = docr.SelectSingleNode("/Res/Message/Result");
                XmlNode node2 = docr.SelectSingleNode("/Res/Message/ErrDesc");
               


                if (node1 != null && node2 )
                {
                    Response.Write(node1.InnerXml + "," + node2.InnerXml);
                    
                }
                
            }
            catch
            { }
        }


 /// <summary>
        /// 生成xml doc做为传送参数  里面可自行添加字段及数据
        /// </summary>
        /// <returns></returns>
        public XmlDocument GetXmlData()
        {
XmlDocument doc = new XmlDocument();
//加入XML的声明段落
            XmlDeclaration declarationDoc = doc.CreateXmlDeclaration("1.0", "utf-8", "");
doc.AppendChild(declarationDoc);
//创建一个根元素
XmlElement root = doc.CreateElement("root");
            
            XmlAttribute attr = doc.CreateAttribute("Type");
            attr.InnerXml = "type";
            root.Attributes.Append(attr);            
            //创建节点1
            XmlNode ChildNode1 = doc.CreateNode(XmlNodeType.Element, "node1", "");
            ChildNode1.InnerXml = "node1";
            root.AppendChild(ChildNode1);
            //创建节点2
            XmlNode ChildNode2 = doc.CreateNode(XmlNodeType.Element, "node2", "");
            ChildNode2.InnerXml = "node2";
            root.AppendChild(ChildNode2);           


            doc.AppendChild(root);
            //此处保存只是为了验证生成的xml是否正确,可以注释掉
            string fileName = System.Guid.NewGuid().ToString()+".xml";
            doc.Save(HttpContext.Current.Server.MapPath(@"./tmp\" + fileName));


            return doc;




        }


 /// <summary>
        /// WebHttpRequest 基础类 数据转换成utf-8编码以post发送给指定地址 传输的是xml格式
        /// </summary>
        /// <param name="webMethod">提交方式 POST,GET</param>
        /// <param name="sURL">提交路径</param>
        /// <param name="webPostData">参数字符串</param>
        /// <returns>返回HTML代码</returns>
        internal string WebHttpRequest(string webMethod, string sURL, string webPostData)
        {
            //将字符串转换成utf-8字节数组
            byte[] sData = Encoding.UTF8.GetBytes(webPostData);


            string fString = "";


            #region "WEB实例初始化"
            HttpWebRequest webRequest = null;


            HttpWebResponse webResponse = null;


            Uri webURL = new Uri(sURL);


            Stream webStream = null;


            StreamReader webReader = null;
            #endregion


            try
            {
                webRequest = (HttpWebRequest)WebRequest.Create(webURL);


                webRequest.Method = webMethod;


                webRequest.ContentType = "text/xml";
                //"application/x-www-form-urlencoded";


                webRequest.ContentLength = sData.Length;


                //webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1) Web-Sniffer/1.0.24";


                try
                {
                    webStream = webRequest.GetRequestStream();


                    webStream.Write(sData, 0, sData.Length);


                    webStream.Close();
                }
                catch (IOException ioEx)
                {
                    throw ioEx;
                }
                finally
                {
                    webStream.Close(); 
                    webStream.Dispose();     //清空实例
                } 


                try
                {
                    webResponse = (HttpWebResponse)webRequest.GetResponse();
                    webReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8);


                    fString = webReader.ReadToEnd();


                    return fString;
                }
                catch (IOException ioEx)
                {
                    throw ioEx;
                }
                finally
                {
                    webReader.Dispose();
                }
            }
            catch (HttpListenerException httpEx)
            {
                throw httpEx;
            }
            finally
            {
                #region "清空实例对象"
                webStream.Dispose();
                webReader.Dispose();
                #endregion
            }
        }


=========================================
=========接收数据并返回值xml=============
=========================================
==此处发送和接收到返回的xml格式用的是同一种,可以根据实际情况自行处理


 protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
               XmlDocument doc = new XmlDocument();
                try
                {
                    StreamReader reader = new StreamReader(Request.InputStream,Encoding.UTF8);
                    String xml = reader.ReadToEnd();                    
                 
                    doc.LoadXml(xml);
                    XmlNode node1 = doc.SelectSingleNode("/root/node1").InnerXml;
                    XmlNode node2 = doc.SelectSingleNode("/root/node2").InnerXml;
                   
                    XmlDocument xd = GetXmlData();
                    byte[] tdata = Encoding.UTF8.GetBytes(xd.InnerXml);


                    Stream webStream = Response.OutputStream;


                    webStream.Write(tdata, 0, tdata.Length);


                    webStream.Close();
                }
                catch()
                {}
             }
       }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值