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


        #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

将XmlDocument转化为string函数

小注:

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.

原文地址

C#中的AS、IS运算符与强制类型转换

时间: 2024-09-19 09:57:36

C# POST XML(修正中文乱码问题)的相关文章

修正中文乱码问题后的C# POST XML

#region 发送xml文件给指定网址 /// <summary> /// 发送xml文件给指定网址 /// </summary> /// <param name="v_strURL">目标Url</param> /// <param name="v_objXMLDoc">需要发送的数据(XmlDocument格式的)</param> /// <returns>服务器响应</

EBS xml publisher中文乱码问题及解决办法_oracle

由于本机环境问题,导致做的xml publisher报表跑不出来,无法显示 XML 页. 使用 XSL 样式表无法查看 XML 输入.请更正错误然后单击 刷新按钮,或以后重试. XML 文档只能有一个顶层元素.处理资源 'http://***.***.com:8001/OA_CGI/FNDWRR.exe?temp_id=2326230111' 时出错.第 12 行,位置: 2 <ITEM_LIST> -^ 但是在同事的电脑上可以跑出来. 后面设置了$OA_JRE_TOP/jre/lib/fon

Java Web开发项目中中文乱码解决方法汇总_java

Java Web项目中,解决中文乱码方法总结如下 第一种情况:调用jsp页面中文显示乱码问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码. 解决方法:首先确认本jsp在编辑器中保存文件内容时,使用的是utf-8的编码格式,然后在jsp页面的开始处添加<%@ pageEncoding="utf-8"%>就可以解决这种中文乱码问题 第二种情况:调用servlet页面显示乱码问题描述:通过浏览器调用servlet,servlet在浏览器中显示的内容出现乱码.

django_pyodbc写sqlserver中文乱码问题

问题描述 django_pyodbc写sqlserver中文乱码问题 CentOS平台,系统和脚本文件都是UTF-8字符集,数据库配置如下: 'OPTIONS':{ 'host_is_server': True, 'unicode_results': True, 'collations': 'Chinese_PRC_CI_AS', 'encoding': 'cp936', }, unicode_results字段官网没有,加上后才能解决查询结果乱码问题.使用官网的encoding设置一直解决不了

解决javaWEB中前后台中文乱码问题的3种方法_java

中文乱码问题真的是一个很棘手的问题,特别是从前台传到后台之后,都不知道问题出在哪里了.现在分享解决javaWEB中前后台中文乱码问题的3种方法.方法一:tomcat的自带编码是ISO-8859-1的格式,是不兼容中文的编码的.所以我们从后台接收的时候要注意. 采用相同的格式去接收(ISO-8859-1),然后用能解析的编码(utf-8)去转换.这样我们就能得到能兼容中文的格式了.这样处理之后发往前台.注意:发往前台的时候也需要设置一下resp.setContentType("text/html;

linux下的expat处理xml出现乱码(非中文乱码问题)。怎么回事??【险】【险】【险】

问题描述 linux下的expat处理xml出现乱码(非中文乱码问题).怎么回事??[险][险][险] 源代码如下: xml文件内容如下: 运行输出如下: 为什么会有乱码?明明只是ascii字符. 求求各位帮一下菜鸟. 解决方案 查询各种编码格式是否一样 解决方案二: 看一下你的xml文件本身的编码格式是不是是其他编码格式. 解决方案三: xml 中文乱码问题

PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案_php实例

php中DOMDocument对于xml操作我们只要是英文是没有问题了,但如果是中文字体就会有乱码问题了,下面我们就此问题给各位介绍一些解决办法吧. PHP的DOM内部是utf8机制的,在loadHTML时,是通过检查字符中meta的charset来设置编码的,如果没有charset,就当iso8859进行处理了,而这种情况下进行saveXML时,输出来的却是utf8,所以就看到乱码了. 这么说是不是还不太理解,举个例子: $xml = new DOMDocument(); @$xml->loa

java socket 用数组缓冲循环读取xml数据随机个别中文乱码

问题描述 javasocket用数组缓冲循环读取xml数据随机个别中文乱码关键代码byte[]buf=newbyte[1024]while(...){len=in.read(-)stringbuilder.append(newstring(buf,0,len,"gb2312"))}注意,是最终结果随机个别中文乱码谢谢 解决方案 解决方案二:这样当然会随机乱码,直接以字符流读取就好了.如果你还是要用字节流读取的话,那你要一次性把所有的字节全部读取之后,然后再转成字符串就好了.乱码的原因是

PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案

php中DOMDocument对于xml操作我们只要是英文是没有问题了,但如果是中文字体就会有乱码问题了,下面我们就此问题给各位介绍一些解决办法吧. PHP的DOM内部是utf8机制的,在loadHTML时,是通过检查字符中meta的charset来设置编码的,如果没有charset,就当iso8859进行处理了,而这种情况下进行saveXML时,输出来的却是utf8,所以就看到乱码了. 这么说是不是还不太理解,举个例子: $xml = new DOMDocument(); @$xml->loa