我遇到了向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但没有成功。我想知道我是否必须在客户端或服务器端执行操作。你能告诉我有关任何建议吗?
答案 0 :(得分:1)
HtmlEncode为您返回的是什么?我会怀疑像
这样的东西<note xsi:type="xsd:string">1€</note>
应该有一些效果。