[英]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.