1

如何从请求中获取原始字节?打电话给request.body.asBytes()我收到这条消息:

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

我看到HTTPRequestBody有在这种情况下使用的属性retainOriginalBytes,但是我在哪里设置它?

谢谢!

4

2 回答 2

0

无论您在请求中遇到什么端点,都会在其正文中返回一个 Map,而不是一个字节列表。

我不确定您是否可以控制该端点返回的内容,但如果可以的话,那将是更改它的地方。

查看BytesBuilder类。此外,请阅读 Aqueduct 文档以获取请求和响应对象。希望这能让你走上正确的道路!

于 2017-11-19T18:35:03.253 回答
0

你走在正确的轨道上;一旦设置retainOriginalBytes为 true,这将正常工作。这必须在身体被解码之前完成。

HTTPController中,请求正文在调用处理请求的方法之前被解码。就在解码之前,HTTPController调用它的willDecodeRequestBody()方法。默认情况下,此方法不执行任何操作,但您可以将其覆盖为 set retainOriginalBytes

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

是执行此操作的应用程序示例。

于 2017-11-20T14:14:25.680 回答