2016-09-20 23 views
0

mvc APIに行くデータを使用しています。この場合、私は郵便配達員を使ってデータを渡します。 データ形式は生のテキストです。私は以下の通りAPIに渡していた値、およびEDFを表す(http://www.edfplus.info/)データ:メモリストリームを読み込めません。C#

ここ
"rawdata":{ 

"binaryencoding":"base64","FileID":3,"ExtensionName":"edf", 

    "value":"gMnW5\/P5 \/Pz16+HZ087KyMbEwsHBwMDAwMHBwcLCw8PExMXFxsfHyMnJysvLy8zMy8vLysrKysnJycnJycrKysvLy8vMzMzMzc7Q0dLS0dHQzs3MysjHxcTCwL69u7m3trSysbCvra2sq6uqqqqqqqqqq6urrKysrK2tra.....QjY2SnKu7zNnb1Mi7sKehnJiWlJKRkZCQkJCRkZGSkpOTk5SUlJWVlpaXl5iYmZmampqam5qbm5ubm5ycnJ2dnp6fn6CgoaGioqGhoKCfnp6dnJybm5uampqamZmZmZiYmJeXlpaWlZWVlZSUlJOTk5KSkZGRkZGQkJCQkI+Pj4+Pj4+Pj..." 

あなたは、私が直接httppostからrawdata.valueを割り当てます、いくつかのcode.Toは物事をシンプルです前に作成されたオブジェクトには、値は文字列です。

myObject.value=rawdata.value; 
byte[] data=Base64.Convert.FromBase64String(myObject.value);(myobject.Value); //this gives you a 15.000 positions array. 
Stream stream = new MemoryStream(data); 
//the stream gets those ReadTimeOut and WriteTimeOut exceptions,after being created 
StreamReader Sr=new StreamReader(stream); 
char[] header=new char[256]; 
sr.ReadBlock(header, 0, 256); 

あなたがブロックを検査するとき、それは記号で、次のようにすべての値があります。

[0] = 65533 '�'

私も、私はストリームを検査したときにすることを追加する必要があり、私はSystem.InvalidOperationException

なぜこのエラーが発生しているのか分かりませんか?ありがとう

+0

このコードは意味がありません。データがどのようなものであるか/表現されるべきかを教えてください。私たちはあなたがbase64エンコーディングで何かを持っていることを知っていますが、それは何ですか? –

+0

私はさらに多くの詳細を追加しました – Theman

+0

そのbase64でエンコードされた文字列の内容は実際にはテキストですか?それですか?なぜあなたは '.ReadBlock 'を使用していますか?どうやら '.ReadLine'はどうでしょうか? –

答えて

-1

MemoryStreamが作成された後に問題が発生する可能性があります。位置は配列の終わりを指しています。あなたはこれを試しましたか?

// this value comes from raw data, and for this example, lets suppose that it is all right. 
byte[] data=Base64.bDecodingForString(Value); 
Stream stream = new MemoryStream(data); 
//the stream gets those ReadTimeOut and WriteTimeOut exceptions,after being created 
stream.Position = 0; 
if(stream.CanRead) 
{ 
    StreamReader Sr=new StreamReader(stream); 
    char[] header=new char[256]; 
    sr.ReadBlock(header, 0, 256); 
} 
else 
{ 
    //Show error 
} 
+0

コンストラクタが呼び出された後の最初の位置は、コンストラクタパラメータの一部として巨大な配列を供給しても、位置0です。あなたの答えは、答え以上のコメントです。 –

+0

私はこれを見るでしょう、ありがとう – Theman

+0

それは問題を解決しなかった、それは私にそれらの奇妙な値を与え続けている[0] = 65533 ' '、あなたの時間のおかげで – Theman