程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C# POST XML(修正中文亂碼問題)

C# POST XML(修正中文亂碼問題)

編輯:關於C#
 

#region 發送xml文件給到指定URL
        /// <summary>
        /// 發送xml文件給NC
        /// </summary>
        /// <param name="v_strURL">目標Url</param>
        /// <param name="v_objXMLDoc">需要發送的數據(XmlDocument格式的)</param>
        /// <returns>服務器響應</returns>

        public XmlDocument PostXMLTransaction(string v_strURL, XmlDocument v_objXMLDoc)
        {

    XmlDocument XmlResponse = null;

            HttpWebRequest req;
            HttpWebResponse rep = null;
            Stream reqStream = null;
            //創建一個流對象(用來讀取響應對象的內容)
            Stream repStream = null;
            XmlTextReader objXmlReader;
            req = (HttpWebRequest)WebRequest.Create(v_strURL);
            try
            {
                # region Start HttpRequest
                byte[] bytes;
                //傳遞的值
                bytes = Encoding.UTF8.GetBytes(v_objXMLDoc.InnerXml);
                //傳遞的方法,必須要寫,而已Get必須大寫。
                req.Method = "POST";
                req.ContentLength = bytes.Length;
                //表頭的格式必須要寫,否則請求響應的頁面得不到要傳遞的值
                req.ContentType = "text/xml;encoding='utf-8'";
                //把傳遞的值寫到流中
                reqStream = req.GetRequestStream();
                reqStream.Write(bytes,0,bytes.Length);
                //必須要關閉請求
                reqStream.Close();
                #endregion End HttpRequest
                //創建一個響應對象,並從請求對象中得到響應對象的事例。
                //rep = (HttpWebResponse)req.GetResponse();//此時程序才開始向目標網頁發送Post請求 
                rep = req.GetResponse() as HttpWebResponse;
                #region Start HttpResponse
                //HttpStatusCode.OK,指示請求成功,且請求的信息包含在響應中
                if (rep.StatusCode == HttpStatusCode.OK)
                {
                    //得到回應過來的流
                    repStream = rep.GetResponseStream();
                    //Load response stream into XMLReader
                    objXmlReader = new XmlTextReader(repStream);
                    XmlDocument xmldoc = new XmlDocument();
                    xmldoc.Load(objXmlReader);
                    XmlResponse = xmldoc;
                    objXmlReader.Close();
                }
                //響應關閉,要不會占用網絡資源
                rep.Close();
                #endregion
            }
            catch (WebException we)
            {
                Pub_Method.WriteFile("PostXMLTransaction函數中出現的WebException信息為:" + "\r\n", logName, out ErrMsg);
                Pub_Method.WriteFile(we.ToString() + "\r\n\r\n", logName, out ErrMsg);
            }
            catch (Exception ex)
            {
                Pub_Method.WriteFile("PostXMLTransaction函數中出現的Exception信息為:" + "\r\n", logName, out ErrMsg);
                Pub_Method.WriteFile(ex.ToString()+ "\r\n\r\n", logName, out ErrMsg);
            }
            finally
            {
                //關閉連接
                reqStream.Close();
                repStream.Close();
                rep.Close();
                //釋放對象
                objXmlReader = null;
                reqStream = null;
                repStream = null;
                rep = null;
                //objHttpWebRequest = null;
                if (req!= null)
                {
                    req.Abort();
                }
            }
 

            return XmlResponse;     

}
        #endregion

背景:

發送一段拼接好的xml格式字符串到指定的URL。 將XmlDocument轉化為string函數   小注: 1、Content-Type:很多時候無法解析就是Content-Type的問題。如果本身就是xml文件,請跳過這一步 動態生成的XML一定要將其設置為text/xml,否則默認就是text/html也就是普通的文本了。 2、HttpWebRequest在初始化的時候要先根據url進行創建,然後再設置Method和ContentType,然後再將請求的內容寫進去,通過GetRequestStream來返回流,再向這個流中寫請求內容便可以了。再通過request對象的GetResponse方法返回response對象,最後得到返回的數據流,這是通過GetResponseStream方法返回的,最後從這個流中讀出返回的數據便ok了。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved