在SOAP请求中发送特殊字符

时间:2017-07-10 19:08:59

标签: c# winforms soap

我遇到了向Web服务发送包含特殊字符的SOAP请求的问题。我有一个WinForm文本框,用户输入文本,如" 1€"例如。然后我调用一个WS方法,该方法旨在将数据存储到数据库中。

我实现了IClientMessageInspector以拦截  SOAP入站/出站消息,并注意到发送到服务器的字符串是"1▒" :

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">urn:MYWebService#insertData</Action>
  </s:Header>
  <s:Body s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <q1:insertData xmlns:q1="urn:MYWebService">
      <note xsi:type="xsd:string">1▒</note>
    </q1:insertData>
  </s:Body>
</s:Envelope>

因此,存储在数据库表中的数据是&#34; 1?&#34;。

我做了很多尝试,例如使用WebUtility.HtmlEncode但没有成功。我想知道我是否必须在客户端或服务器端执行操作。你能告诉我有关任何建议吗?

1 个答案:

答案 0 :(得分:1)

HtmlEncode为您返回的是什么?我会怀疑像

这样的东西
<note xsi:type="xsd:string">1&euro;</note>

应该有一些效果。