我如何从请求中获取原始字节?致电request.body.asBytes()
我收到此消息:
asBytes() expected list of bytes, instead got List<_InternalLinkedHashMap<String, dynamic>>
我看到HTTPRequestBody
在这种情况下使用属性retainOriginalBytes
,但我在哪里设置了它?
谢谢!
答案 0 :(得分:0)
无论您在请求中遇到什么端点,都会在其正文中返回一个Map,而不是Bytes列表。
我不确定您是否可以控制该端点返回的内容,但如果可以,则可以更改它。
查看BytesBuilder课程。另外,请阅读Request and Response Objects的Aqueduct文档。希望这能让你走上正确的道路!
答案 1 :(得分:0)
你走在正确的轨道上;将retainOriginalBytes
设置为true后,这将正常工作。这必须在解码主体之前完成。
在HTTPController
中,在调用处理请求的方法之前解码请求正文。在解码之前,HTTPController
调用其willDecodeRequestBody()
方法。默认情况下,此方法不执行任何操作,但您可以覆盖它以设置retainOriginalBytes
:
@override
void willDecodeRequestBody(HTTPRequestBody body) {
body.retainOriginalBytes = true;
}
Here是执行此操作的应用程序的示例。