簡體   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