【问题标题】:null request body for large data大数据的空请求正文
【发布时间】:2015-01-30 06:08:14
【问题描述】:

我在 post 方法的正文中发送大量文本。 我使用 Postman 进行测试。 但是它工作正常,我可以像这样读取请求正文:

String text = request().body().asText();

但是当我尝试在正文中发送大量数据时,我得到的文本为空。 我也尝试使用字符串生成器,但我也得到了 null。

 InputStream is = new ByteArrayInputStream(request().body().asText().getBytes());
        BufferedReader br = new BufferedReader(new InputStreamReader(is));

有没有办法解决这个问题??

【问题讨论】:

  • 您尝试发布的数据大于 128k(Play 中的默认值)?如果是这样,请将其添加到 aplication.conf parsers.text.maxLength=4M,例如
  • @Salem 在这种情况下,我认为控制器逻辑不会继续游戏。相反,我认为它会抛出一个错误的请求或类似的东西。这是一个例子link
  • 谢谢,将 parsers.text.maxLength=4M 添加到 application.conf 对我有用!

标签: java http post playframework


【解决方案1】:

默认情况下,Play 将上传数据大小限制为 100kb 到文本解析器 (*)。这可以在application.conf 中使用parsers.text.maxLength 全局更改为更大的值

parsers.text.maxLength=4M

或在特定的响应或操作中使用

@BodyParser.Of(value = TheBodyParser.class, maxLength = 4 * 1024 * 1024)
public Result upload() {
    // (...)
}

def upload = Action(parse.text(maxLength = 4 * 1024 * 1024)) { request =>
  // ()
}

(*) 对于缓冲内容(前多部分形式)的解析器,限制为 10MB,可以使用 parsers.disk.maxLength 进行更改

【讨论】:

    猜你喜欢
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2020-10-09
    • 2019-10-22
    相关资源
    最近更新 更多