使用ajax请求发布大型JSON对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ajax请求发布大型JSON对象相关的知识,希望对你有一定的参考价值。
我需要帮助使用angularjs中的ajax将大型JSON对象发布到服务器。当我使用post请求在ArrayList
中发送大约10000条记录的JSON对象时,它被接受并且我得到相同的响应。但是当我上传30000条或更多记录并尝试使用ajax发送它时,它返回以下错误: -
[io.undertow.request] (default task-5) UT005007: Request was not fully consumed
我怎样才能解决这个问题?
我正在使用Wildfly 10和java 8.我可以增加任何帖子大小参数吗?
您似乎正在使用Undertow来接收POST请求。检查您的设置中MAX_ENTITY_SIZE
选项的值是多少,可能是有限的:
请求实体的默认最大大小。如果实体主体大于此限制,则在读取请求时将在某个时刻抛出
java.io.IOException
(在第一次读取固定长度请求时,当已经为分块请求读取了太多数据时)。此值仅为默认大小,处理程序可以通过调用io.undertow.server.HttpServerExchange.setMaxEntitySize(long size)
为单个请求覆盖此值。默认为无限制。
正如在this thread中所建议的,这可能是在Spring中使用MultipartConfigFactory
bean配置的:
@Bean
public MultipartConfigElement multipartConfigElement()
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setMaxFileSize("100MB");
factory.setMaxRequestSize("100MB");
return factory.createMultipartConfig();
@KarolDowbecki提出的建议可能会奏效,但还有另一种方法。在您正在使用的standalone.xml
文件中,您可以更改:
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
至:
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" max-post-size="16777216"/>
在这种情况下,增加到16MB。至少Wildfly 16的默认值为10MB。
或者,如果你想编写脚本,这样你就不必手动修改standalone.xml
,你可以使用jboss-cli并运行:
/subsystem=undertow/server=default-server/http-listener=default/:write-attribute(name=max-post-size,value=16777216)
以上是关于使用ajax请求发布大型JSON对象的主要内容,如果未能解决你的问题,请参考以下文章
如何使用一个ajax请求从java servlet返回多个json对象