C# POST XML(修正中文乱码问题)

简介: #region 发送xml文件给指定网址 /// <summary> /// 发送xml文件给指定网址 /// </summary> /// <param name="v_strURL">目标Url</param> /// <param
 
 

        #region 发送xml文件给指定网址
        /// <summary>
        /// 发送xml文件给指定网址
        /// </summary>
        /// <param name="v_strURL">目标Url</param>
        /// <param name="v_objXMLDoc">需要发送的数据(XmlDocument格式的)</param>
        /// <returns>服务器响应</returns>
        public static XmlDocument PostXMLTransaction(string v_strURL, XmlDocument v_objXMLDoc)
        {
            //set max enough to avoid http request is used out -> avoid dead while get response
            ServicePointManager.DefaultConnectionLimit = 200;
            XmlDocument XmlResponse = null;
            HttpWebRequest req;
            HttpWebResponse rep = null;
            Stream reqStream = null;
            //创建一个流对象(用来读取响应对象的内容)
            Stream repStream = null;
            XmlTextReader objXmlReader;
            //垃圾回收
            System.GC.Collect();
            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)
            {
               //异常处理
            }
            catch (Exception ex)
            {
                //异常处理
            }
            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

小注:
1、 Content-Type:很多时候无法解析就是Content-Type的问题。如果本身就是xml文件,请跳过这一步
动态生成的XML一定要将其设置为text/xml,否则默认就是text/html也就是普通的文本了。
2、 HttpWebRequest在初始化的时候要先根据url进行创建,然后再设置Method和ContentType,然后再将请求的内容写进去,通过GetRequestStream来返回流,再向这个流中写请求内容便可以了。再通过request对象的GetResponse方法返回response对象,最后得到返回的数据流,这是通过GetResponseStream方法返回的,最后从这个流中读出返回的数据便ok了。
3、ServicePointManager .DefaultConnectionLimit Property:Gets or sets the maximum number of concurrent connections allowed by a ServicePoint object.
目录
相关文章
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
|
XML 存储 C#
C#三十 Ado.net和XML
C#三十 Ado.net和XML
108 0
|
7月前
|
XML 前端开发 测试技术
如何使用 Postman 发送 POST XML 请求?
使用 Postman 发送带有 XML 数据的 POST 请求。我们将引导您完成将 XML 数据有效发送到 Web 服务或 API 的步骤,使处理这种常见数据格式变得简单易行。
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
374 61
C# 中的 XML 与 JSON 数据处理
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
543 0
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
2339 0
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
163 1
|
XML 存储 C#
C# xml文档反序列化记事
本文介绍了使用XmlSerializer进行XML序列化和反序列化的关键点。包括:1) 以独占方式读取XML文件以避免并发问题;2) 当元素名与类型名不一致时,可通过`[XmlArrayItem]`指定元素名,或创建继承自原始类型的子类;3) 处理DateTime反序列化错误,通过中间字符串属性转换;4) 提到了常用C#特性如`[XmlRoot]`, `[XmlElement]`, `[XmlAttribute]`, `[XmlIgnore]`和`[XmlArrayItem]`的作用。
199 0
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
610 2
|
XML 存储 JSON
c#XML、JSON的序列化和反序列化,看完你就懂了
c#XML、JSON的序列化和反序列化,看完你就懂了
514 0