1

Web 応答を逆シリアル化しようとすると、無効な操作の例外が発生します。

この Web 応答では、https 経由で送信する XML ページを取得します。私のコードは基本的に、ログイン Cookie を取得するための Web リクエストを送信し、次に XML ページを取得するための別のリクエストを送信し、その後、そのページを逆シリアル化します。

デシリアライズしようとすると問題が発生し、次のエラーが表示されます。

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

最初に、Web 応答を調べて、適切なデータがあるかどうかを確認しました。そこで、webresponse を streamreader に入れ、readToEnd を使用して文字列に変換しました。そのようです:

dim myStringResult as String = myStreamReader.ReadToEnd()

それは私にいくつかの文字と数字とブロックを与えました。だから私は私が得る応答が問題だと思います。Fiddler で確認したところ、コンテンツを表示する前に応答をデコードする必要があることがわかりました (そして、必要な適切な応答がありました)。私は例外をもう少し深く掘り下げて、それが言うのを見ました

hexadecimal value 0x1F, is an invalid character. Line 1, position 1

System.Text.Encoding を調べてみましたが、16 進数のものが見つかりませんでした。誰でもこれで私を助けることができますか?

編集: 16 進数でエンコードされているためではなく、https 応答であるため、デコードする必要がある可能性があります。

edit1:HttpUtility.HtmlDecode残念ながら、文字列を変更しませんでした。

edit2:私が取得しているデータの例

{� �U�r�0��+(g���(J���$�k;IomR& �I�N?���/� 6���L�^`���</p >

データが正しく表示されません。ほとんどが正方形であると思われます。ときどき見かける

編集:ヘッダー

content-disposition: : attachment; filename="document.xml"
CachingModuleShouldWork: true
Content-Language: en-US

Vary: Accept-Encoding,User-Agent

コンテンツの長さ: 382 コンテンツの種類: アプリケーション/xml

4

2 に答える 2

0

Web から読み取ったコンテンツをデコードしている場合は、これを確認することをお勧めします。

HttpUtility.HtmlDecode メソッド (文字列)

編集:同様の質問

16 進値 0x1F は無効な文字です。行 1、位置 1

于 2012-11-21T09:11:55.810 に答える