我正在集成一个应用程序和一个服务(iContact),它描述它的应用程序接口为"rest-like“。我发布了XML,一切都很好...在我发送一些特殊的字符之前,我会收到一个来自服务器的“错误请求”错误。
<contacts>
<contact>
<firstname>Søren</firstname>
<lastname>ÆbleTårn</lastname>
</contact>
</contact>我试着把名字和姓氏的值放在cdata中,但是没有用。
有没有可以应用于值的编码(类似于html-encode),或者我需要向另一个方向移动吗?
我怀疑这个问题是特定于.Net的,但答案可能是特定的,所以下面是我使用的代码:
Dim xml as string = GenerateXml()
Dim http As New HttpClient("http://uri.to/rest")
Dim resp As HttpResponseMessage = http.Post(String.Empty, HttpContent.Create(xml))发布于 2009-08-22 14:44:06
您可以在XML中使用数字实体来帮助解决一些编码问题:
<firstname>Søren</firstname>但您仍然必须确保服务器编码正确,才能接收、处理和存储这些字符。很难知道错误在哪里……
发布于 2009-08-22 15:01:39
这个web服务似乎没有使用与您的应用程序相同的字符集编码。典型的编码是UTF-8或UTF-16。在服务文档中查找字符编码(如果失败,则在服务响应中查找),并查看是否有指定的编码。如果指定了一个,请验证它是否与客户端请求中使用的编码匹配。
对数据进行XMLEncode也是一种很好的做法。
发布于 2009-08-22 16:40:47
在答案指出了正确的方向之后,我编写了这个函数来对文本进行xmlencode。
Public Function XmlEncode(ByVal text As String) As String
For i As Integer = 127 To 255
text = Replace(text, Chr(i), "&#" & i.ToString & ";")
Next
return text
End Function我相信它可以更有效,但性能并不是真正的问题,因为这将不会经常运行。
https://stackoverflow.com/questions/1316090
复制相似问题