繁体   English   中英

无法读取 httpwebresponse

[英]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);

如果您正在解码从网络上读取的内容,我建议您检查以下内容:

HttpUtility.HtmlDecode 方法(字符串)

编辑:类似的问题

十六进制值 0x1F,是一个无效字符。 第 1 行,位置 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM