zoukankan      html  css  js  c++  java
  • 调用webservice接口,报错:(十六进制值0x01)是无效的字符


    #事故现场

    调用webservice接口,报错:(十六进制值0x01)是无效的字符。
    如图:
    在这里插入图片描述
    意思是webservice返回的信息中包含无效的字符,无法解析成xml;

    #分析

    使用postman向webservice发送请求,请求成功,返回了数据,但在数据中发现了一些莫名其妙的字符,如图:
    在这里插入图片描述
    因数据来源数据库,故去数据库中查询,果然又发现,如图:
    在这里插入图片描述
    将异常文本复制到notepad++中,显示的是:SOH
    在这里插入图片描述
    SOH是ASCII中的控制字符,start of heading的缩写,报文头的意思;

    在ASCII码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。
    在这里插入图片描述

    #解决方法

    故取数据的时候要过滤掉这些字符,以C#代码为例:

    /// <summary>
    /// 过滤不可见字符
    /// </summary>
    /// <param name="sourceString">原始字符</param>
    /// <returns>删除后结果</returns>
    
    public string DeleteControlChar(string sourceString)
    {
           System.Text.StringBuilder sBuilder = new System.Text.StringBuilder();
           for (int i = 0; i < sourceString.Length; i++)
           {
                int Unicode = sourceString[i];
                if (Unicode > 31 && Unicode != 127)
                {
                    sBuilder.Append(sourceString[i].ToString());
                }
           }
         return sBuilder.ToString();
    }
    

  • 相关阅读:
    Ocelot + IdentityServer4 坑自己
    撸一个简易商城
    visual studio2013负载测试简单问题记录
    Jquery简单动画的实现记录
    Jquery的一些简单使用记录
    图片变灰css3
    Jquery的一些取值
    ASP.NET WebApi 简单记录
    iframe的一些简单记录
    Jquery Select 下拉框处理
  • 原文地址:https://www.cnblogs.com/willingtolove/p/13121612.html
Copyright © 2011-2022 走看看