当我尝试反序列化web响应时,我收到了无效的操作异常。
在这个webresponse中,我得到一个通过https发送的XML页面。 我的代码所做的基本上是发送webrequest来获取login-cookies,然后发送另一个获取XML页面的请求,然后我反序列化该页面。
当我尝试反序列化时出现问题,它给出了以下错误:
There is an error in XML document (1, 1).
首先,我查看了我的webresponse,看看它是否有正确的数据。所以我将webresponse放入streamreader并使用readToEnd将其转换为字符串。像这样:
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 ^`
它没有正确显示数据。它假设主要是小平方。你时不时地看到
编辑:标题
content-disposition: : attachment; filename="document.xml" CachingModuleShouldWork: true Content-Language: en-US Vary: Accept-Encoding,User-Agent
Content-Length:382 Content-Type:application / xml
答案 0 :(得分:2)
0x1f是一个Windows控件字符。它不是有效的XML。
您需要先使用HttpUtility.Decode
之类的内容对其进行解码所以:获取您的响应并使用StreamReader将其读入字符串,然后执行以下操作:
StringWriter myWriter = new StringWriter();
// Decode the encoded string.
HttpUtility.HtmlDecode(myEncodedString, myWriter);
答案 1 :(得分:0)
如果您正在解读从网络上读取的内容,我建议您检查一下:
HttpUtility.HtmlDecode Method (String)
编辑:类似问题
hexadecimal value 0x1F, is an invalid character. Line 1, position 1