You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SOAP请求在SOAPUI正常运行,C#调用导出过滤器报错问题排查

Enablon SOAP API ExportData 过滤器参数问题解决思路

问题回顾

在SOAPUI中可正常执行的ExportData请求,用C#自动生成的SOAP客户端调用时出现异常:

  • 使用HTML转义等号=作为Filter参数时,报错Unable To Apply Export Filter: Invalid Date: Missing closing "#"
  • 使用原始等号=时,返回空结果,无匹配数据
  • 必须使用过滤器避免数据量过大导致超时

解决思路

1. 对比SOAPUI与C#客户端的实际请求内容

通过抓包工具(如Fiddler、Wireshark)或启用C#客户端的SOAP日志,查看两者发送的XML请求中Filter参数的差异:

// 在C#代码中启用SOAP日志
srvEnablon.EnablonWS_Serv srv = new EnablonWS_Serv();
srv.Url = "https://www.aurl.com";
srv.TraceEnabled = true;
srv.TraceListener = new System.Diagnostics.TextWriterTraceListener("soap_request.log");

重点确认Filter参数的转义状态、是否被额外处理,确保C#发送的格式与SOAPUI完全一致。

2. 尝试XML兼容的参数格式

  • CDATA包裹Filter内容:部分SOAP服务对特殊字符的解析需要CDATA标记,避免自动转义:
    Filter: "<![CDATA[id = 21662]]>"
    
  • 验证Filter语法规则:检查Enablon API文档,确认Filter是否需要单引号包裹值(如id='21662')、是否支持特定运算符(如==)或自然语言表达式(如id equals 21662)。

3. 手动构造SOAP请求

如果自动生成的客户端存在参数转义问题,直接构造原始XML请求发送,完全控制请求内容:

var soapRequest = @"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
  <soap:Header>
    <Security xmlns=""{你的Enablon命名空间}"">
      <UsernameToken>
        <Username>me@mymail.com</Username>
        <Password>blablabla</Password>
      </UsernameToken>
    </Security>
  </soap:Header>
  <soap:Body>
    <ExportData xmlns=""{你的Enablon命名空间}"">
      <Table>/ims/Incidents</Table>
      <FolderId>0</FolderId>
      <FormatType>3</FormatType>
      <Fields></Fields>
      <CSVSeparator>0</CSVSeparator>
      <FormatOptions>26</FormatOptions>
      <Filter>id = 21662</Filter>
      <ExportOptions>0</ExportOptions>
    </ExportData>
  </soap:Body>
</soap:Envelope>";

var request = (HttpWebRequest)WebRequest.Create("https://www.aurl.com");
request.Method = "POST";
request.ContentType = "text/xml; charset=utf-8";
request.Headers.Add("SOAPAction", "{你的SOAP动作}");

using (var writer = new StreamWriter(request.GetRequestStream()))
{
    writer.Write(soapRequest);
}

using (var response = (HttpWebResponse)request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
    var result = reader.ReadToEnd();
    // 处理返回结果
}

注意替换{你的Enablon命名空间}和{你的SOAP动作}为SOAPUI请求中对应的内容。

4. 联系Enablon技术支持

如果上述方法均无效,直接提交问题给Enablon技术支持,提供SOAPUI的请求示例、C#的请求日志及错误信息,排查API的参数解析逻辑差异。


内容的提问来源于stack exchange,提问作者Panos Antoniou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:45:20