2017-11-18 1 views
1

リクエストから元のバイトを取得する方法は?私はこのメッセージを取得request.body.asBytes()を呼び出す:リクエストから元のバイトを取得

asBytes() expected list of bytes, instead got List<_InternalLinkedHashMap<String, dynamic>>

を私はHTTPRequestBodyが、この場合に使用するプロパティretainOriginalBytesを持っていることを見ましたが、私はそれを設定する場所?

ありがとうございます!

+0

あなたは何をしているかの例を示すことができますので、再作成することは可能です。私は、少なくとも、エラーメッセージが良くなるはずだと思います。 – lrn

+0

'request.body.as Bytes()'がコントローラのどこかを呼び出しているときにこのメッセージがスローされます。 'retainOriginalBytes'を使って問題を正しく解決しました –

答えて

0

あなたの要求に遭遇しているエンドポイントは、本体のマップであり、バイトのリストではありません。

エンドポイントが返す内容を制御できるかどうかはわかりませんが、可能であれば、それを変更する場所になります。

BytesBuilderクラスをチェックしてください。また、AqueductのドキュメントRequest and Response Objectsを読んでください。うまくいけば、これはあなたを正しい道に導きます!

0

あなたは正しい軌道に乗っています。 retainOriginalBytesをtrueに設定すると正しく動作します。これはボディをデコードする前に行う必要があります。

HTTPControllerでは、要求本体は、要求を処理するメソッドが呼び出される前にデコードされます。デコードの直前に、HTTPControllerwillDecodeRequestBody()メソッドを呼び出します。このメソッドは、デフォルトでは何もしませんが、あなたはretainOriginalBytes設定し、それを上書きすることができます。

@override 
void willDecodeRequestBody(HTTPRequestBody body) { 
    body.retainOriginalBytes = true; 
} 

Hereをこれを行うアプリケーションの一例です。

+0

こんにちは、それは動作します!ありがとう! –

関連する問題