C# html编码解码应用

情景
在web API开发的过程中,免不了有些系统比较古老,需要支持调用webservice,并使用xml交互。
在基于MVC5或者net.core的方式实现调用webservice并不是十分友好。
一般我不建议直接采用【引用】-【添加服务引用】-【高级】-【添加web引用】 在Net Framework 自动生成的代码
比较多,并不简洁易懂,但是调用是方便很多。

下面是基于自定义SOAP请求服务

#region 构造soap请求信息 格式参考Raw 返回类型参考Raw
                StringBuilder soap = new StringBuilder();
                // soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
                soap.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.ecooperation.epicc.com.cn/\">");
                soap.Append("   <soapenv:Header/>");
                soap.Append("   <soapenv:Body>");
                soap.Append("<web:insureService>");
                soap.Append($" <interfaceNo>{InterfaceNo}</interfaceNo>");
                soap.Append($" <datas><![CDATA[ {Datas} ]]></datas>");
                soap.Append(" </web:insureService>");
                soap.Append("   </soapenv:Body>");
                soap.Append("</soapenv:Envelope>");



                //_loggerHelper.Info("RenBaoInsure请求", xml, "RenBaoInsure");
                bll_TGuaranteeInfo_Manual.AddLog(generalInfo.UUID, "请求", Datas, url);
                //返回成功与失败的判断 失败后返回空的ReturnInfo上去
                string result = GetSOAPReSource(url.Replace("?wsdl", ""), soap.ToString());
                //_loggerHelper.Info("RenBaoInsure返回", WebUtility.HtmlDecode(result), "RenBaoInsure");
                bll_TGuaranteeInfo_Manual.AddLog(generalInfo.UUID, "返回", WebUtility.HtmlDecode(result), url);


                XmlDocument doc = new XmlDocument();
                doc.LoadXml(result);
                ReturnInfo returnInfo = (ReturnInfo)XmlUtil.Deserialize<ReturnInfo>(doc.InnerText);

在传递XML给对方系统前我方的XML格式参数【编码前】,对方系统接受并返回结果回来可能属于【编码后】格式。

编码前

<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<ReturnInfo>
  <GeneralInfoReturn>
    <UUID>cxp49ec8ec93579e340b</UUID>
    <PlateformCode>0726</PlateformCode>
    <ErrorCode>00</ErrorCode>
    <ErrorMessage>成功</ErrorMessage>
  </GeneralInfoReturn>
  <PolicyInfoReturns>
    <PolicyInfoReturn>
      <SerialNo>49</SerialNo>
      <PolicyNo>Q000E01038</PolicyNo>
      <PolicyUrl>http://testing.mypicc.com.cn/t/cc/VNBFv2</PolicyUrl>
      <DownloadUrl><![CDATA[http://ptest.cc.com.cn/ecootion/polinload/dowl.do?platfromcodes=726&policyNo=5BC2E]]></DownloadUrl>
      <SaveResult>00</SaveResult>
      <SaveMessage>处理成功</SaveMessage>
      <SaveTimes>2019-07-15 16:04:29</SaveTimes>
      <InsuredReturns>
        <InsuredReturn>
          <InsuredSeqNo>1</InsuredSeqNo>
          <CheckResult>00</CheckResult>
          <CheckMessage>处理成功</CheckMessage>
        </InsuredReturn>
      </InsuredReturns>
    </PolicyInfoReturn>
  </PolicyInfoReturns>
</ReturnInfo>

编码后

&lt;?xml version=&quot;1.0&quot; encoding=&quot;GB2312&quot; standalone=&quot;yes&quot;?&gt;
&lt;ReturnInfo&gt;
  &lt;GeneralInfoReturn&gt;
    &lt;UUID&gt;cxp49ec8ec93579e340b&lt;/UUID&gt;
    &lt;PlateformCode&gt;0726&lt;/PlateformCode&gt;
    &lt;ErrorCode&gt;00&lt;/ErrorCode&gt;
    &lt;ErrorMessage&gt;成功&lt;/ErrorMessage&gt;
  &lt;/GeneralInfoReturn&gt;
  &lt;PolicyInfoReturns&gt;
    &lt;PolicyInfoReturn&gt;
      &lt;SerialNo&gt;49&lt;/SerialNo&gt;
      &lt;PolicyNo&gt;Q000E01038&lt;/PolicyNo&gt;
      &lt;PolicyUrl&gt;http://testing.mypicc.com.cn/t/cc/VNBFv2&lt;/PolicyUrl&gt;
      &lt;DownloadUrl&gt;&lt;![CDATA[http://ptest.cc.com.cn/ecootion/polinload/dowl.do?platfromcodes=726&amp;policyNo=5BC2E]]&gt;&lt;/DownloadUrl&gt;
      &lt;SaveResult&gt;00&lt;/SaveResult&gt;
      &lt;SaveMessage&gt;处理成功&lt;/SaveMessage&gt;
      &lt;SaveTimes&gt;2019-07-15 16:04:29&lt;/SaveTimes&gt;
      &lt;InsuredReturns&gt;
        &lt;InsuredReturn&gt;
          &lt;InsuredSeqNo&gt;1&lt;/InsuredSeqNo&gt;
          &lt;CheckResult&gt;00&lt;/CheckResult&gt;
          &lt;CheckMessage&gt;处理成功&lt;/CheckMessage&gt;
        &lt;/InsuredReturn&gt;
      &lt;/InsuredReturns&gt;
    &lt;/PolicyInfoReturn&gt;
  &lt;/PolicyInfoReturns&gt;
&lt;/ReturnInfo&gt;
                

【编码后】在C#推荐2种方式快速解码
方式一:

using System.Net;

WebUtility.HtmlDecode(“内容”)

方式二:

using System.Xml;

XmlDocument doc = new XmlDocument();
doc.LoadXml(result);
doc.InnerText;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值