PC<9527> 2024-09-27 17:12 采纳率: 0%
浏览 13
已结题

C# webservice 参数特殊字符处理

C# webservice接口,xml字符串参数中存在特殊字符 (char)2、(char)3,导致请求400异常
参数:数据项以字符\x01分隔,
1    SerialNo    varchar(32)    申请流水号
2    ApplyItemInfo    varchar(512) 项目信息    
如果该申请只有一个项目时:申请项目ID + char(2)+ 申请项目中心码 +char(3)
如果该申请有多个项目时:
申请项目1 ID + char(2)+ 申请项目1中心码 +char(3) +申请项目2 ID + char(2)+ 申请项目2中心码 +char(3)  如此类推
如果该申请只有一个项目时:

需要 visual studio 中正常请求到webservice接口

  • 写回答

26条回答 默认 最新

  • 阿里嘎多学长 2024-09-27 17:12
    关注
    获得0.30元问题酬金

    AIGC生成:


    C# WebService 参数特殊字符处理

    你遇到的问题是 C# WebService 接口中,XML 字符串参数中存在特殊字符(char)2、(char)3,导致请求 400 异常。

    解决方案是使用 HttpUtility.HtmlEncodeXmlConvert.EncodeName 方法对参数进行编码。

    例如:

    string param = "SerialNo\x01varchar(20)";
    param = HttpUtility.HtmlEncode(param);
    

    string param = "SerialNo\x01varchar(20)";
    param = XmlConvert.EncodeName(param);
    

    这样可以将特殊字符转换为合法的 XML 字符串,避免请求 400 异常。

    另外,你也可以使用 System.Security.Cryptography 命名空间中的 HexEncode 方法对参数进行编码。

    string param = "SerialNo\x01varchar(20)";
    param = BitConverter.ToString(Encoding.UTF8.GetBytes(param)).Replace("-", "");
    

    这些方法都可以解决你的问题,但需要根据具体情况选择合适的方法。


    评论

报告相同问题?

问题事件

  • 系统已结题 10月5日
  • 创建了问题 9月27日

悬赏问题

  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏
  • ¥15 以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。