当我试图反序列化一个when响应时,我会得到一个无效操作异常。
在这个webresponse中,我得到了一个XML页面,它通过https发送。我的代码所做的基本上是发送一个获得登录-cookie的get请求,然后是另一个获取XML页面的请求,然后我对该页面进行反序列化。
当我试图反序列化时会出现问题,它会给出以下错误:
There is an error in XML document (1, 1).首先,我查看了我的webresponse,看看它是否有正确的数据。因此,我将我的webresponse放到了流读取器中,并使用readToEnd将其转换为string。就像这样:
dim myStringResult as String = myStreamReader.ReadToEnd()它给了我一些字母、数字和积木。所以我认为我得到的反应是问题所在。我用Fiddler检查了它,发现在看到内容之前需要对响应进行解码(是的,它确实有我想要的正确的响应)。我更深入地了解了这个例外,并看到它说
hexadecimal value 0x1F, is an invalid character. Line 1, position 1我试着查看System.Text.Encoding,但是找不到十六进制的任何东西。有人能帮我吗?
编辑:可能我必须解码它,因为它是https响应,而不是因为它是十六进制编码的。
edit1:我试过HttpUtility.HtmlDecode,不幸的是它没有改变字符串。
edit2:我得到的数据示例
{�U�r�0��+(g���(J��ԙ$�k;IomR&�I�N?���/�6���L�^`���)
它不能正确显示数据。它应该大部分是方形的。有时你会看到
编辑:标题
内容处理::附件;filename="document.xml“CachingModuleShouldWork:真正的内容-语言: en-US差异:接受-编码,用户-代理 内容长度: 382内容类型: application/xml
发布于 2012-11-21 09:15:20
0x1f是Windows控件字符。它不是有效的XML。
您需要首先使用类似于HttpUtility.Decode的方法对其进行解码
因此:获取您的响应并使用StreamReader将其读入字符串,然后执行以下操作:
StringWriter myWriter = new StringWriter();
// Decode the encoded string.
HttpUtility.HtmlDecode(myEncodedString, myWriter);发布于 2012-11-21 09:11:55
https://stackoverflow.com/questions/13489609
复制相似问题