[英]Can't read httpwebresponse
当我尝试反序列化 webresponse 时,我收到了一个 invalidoperation 异常。
在这个网络响应中,我得到一个通过 https 发送的 XML 页面。 我的代码所做的基本上是发送一个 webrequest 来获取登录 cookie,然后发送另一个获取 XML 页面的请求,然后我反序列化该页面。
当我尝试反序列化时出现问题,它给了我以下错误:
There is an error in XML document (1, 1).
首先,我查看了我的网络响应,看看它是否有正确的数据。 所以我将我的 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 响应,而不是因为它是十六进制编码的。
编辑 1:我试过HttpUtility.HtmlDecode
不幸的是它没有改变字符串。
编辑2:我得到的数据示例
{ 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
内容长度:382 内容类型:应用程序/xml
0x1f 是 Windows 控制字符。 它不是有效的 XML。
您需要先使用HttpUtility.Decode 之类的东西对其进行解码
所以:获取您的响应并使用 StreamReader 将其读入字符串,然后执行以下操作:
StringWriter myWriter = new StringWriter();
// Decode the encoded string.
HttpUtility.HtmlDecode(myEncodedString, myWriter);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.