2012-11-21 73 views
1

當我嘗試反序列化web響應時,出現無效操作異常。無法讀取httpwebresponse

在這個web響應中,我得到了一個通過https發送的XML頁面。 我的代碼所做的基本上是發送一個webrequest來獲取登錄cookie,然後是另一個獲取XML頁面的請求,之後我將該頁面反序列化。

的問題時,當我嘗試反序列化,它使我有以下錯誤:

There is an error in XML document (1, 1). 

首先,我看着我的WebResponse的,看它是否具有正確的數據。所以我把我的web響應放入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

+0

你能後的一個例子您從http響應中獲得的數據? –

+0

我編輯了我的問題。真的很奇怪,沒有什麼變化。我已經完成了你所問的。是因爲響應是在https中,這就是爲什麼它給出了0x1f錯誤? – deltu100

+0

這到底是什麼?你通過HttpResponse收到了什麼?我期待和Xml文檔...這看起來像是某種二進制輸出。 –

回答

2

0x1f是一個Windows控制字符。它不是有效的XML。

你需要首先使用類似的解碼HttpUtility.Decode

所以:讓您迴應並使用一個StreamReader,然後像做它讀入一個字符串:

StringWriter myWriter = new StringWriter(); 
     // Decode the encoded string. 
     HttpUtility.HtmlDecode(myEncodedString, myWriter); 
+0

不幸的是它不起作用。我把流媒體播放器串起來,就像你說的那樣。它仍然給我怪異的人物和「myWriter」中的所有奇怪的東西。 – deltu100

+0

字符串保持不變。 – deltu100