无法读取httpwebresponse

时间:2012-11-21 08:59:20

标签: c# vb.net encoding httpwebresponse

当我尝试反序列化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

2 个答案:

答案 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