求助!SpringBoot Post调用WebApi接口,WebApi接口接收不到请求的数据,为null

项目场景:

项目是一个 VUE + Spring Boot(后台) + web API(C#)(后后台)的项目

主要是实现一个信息发布功能。VUE负责界面,SpingBoot用作后台,WebApi是原来旧的信息发布系统的接口,为了方便开发,就进行了复用。


问题描述

主要问题出现在文件上传部分,即SpringBoot调用WebApi接口,将【用Byte[]数组来存储文件信息的数据】Post给WebApi的时候:

//SpringBoot向WebApi Post数据
String resString = MyHttpClientUtils.post(baseUrl, JSON.toJSONString(accessoryRequest));
//WebApi Controller接收数据
public ResponseMsg Post([FromBody]AccessoryDetailRequest request)
{......}

当文件小于3M左右(也没有太多的尝试得到特别精确的值)的时候,SpringBoot接口能接收到上传的file,也明确的回传了,WebApi 后台返回成功;

但当文件大于3M,到达4,5M时候,SpringBoot接口也同样能接收到上传的file,也明确的回传了,但WebApi 后台返回失败。

随后我对于第一、第二种情况都进行了WebApi本地debug调试,第一种情况能接收到完整的request,但第二种情况就发现接收到的request为null【除了文件大小改变外,没有任何的区别。】。


原因分析:

大概猜测问题应该在SpringBoot上,可能是SpringBoot在Post其他接口的时候会限制Post传输数据的大小。也找了一些解决方案
(https://www.cnblogs.com/6324/p/10470690.html)
(https://qyyshop.com/info/983496.html)
也在SpringBoot项目中的application.yml中加入如下的配置:

spring:
  #请求数据大小限制参数配置
  servlet:
    multipart:
      #默认支持文件上传
      enabled: true
      #指定上传文件的最大文件大小,默认1MB
      max-file-size: 100MB
      #指定在文件上传或表单请求中允许的最大请求数据,默认1MB
      max-request-size: 100MB

#Tomcat-Post请求超限制
server:
  tomcat:
    # post请求不设大小限制的时候设置 -1,小于0即可,当然这个也要看使用的tomcat版本,具体的请看着这篇文章
    # 【https://blog.csdn.net/m0_67401920/article/details/124471237】
    max-http-form-post-size: 1024MB
    max-swallow-size: 1024MB
    

数值改成-1也试过,但是都不管用。


解决方案:

后来发现,问题可能在WebApi的请求长度限制上。找到了解决方案
(https://blog.csdn.net/qq_25298175/article/details/133355507)
(https://blog.csdn.net/ZeroRm/article/details/118026549)
maxRequestLength:指示 ASP.NET 支持的最大文件上载大小。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。
executionTimeout:表示允许执行请求的最大时间限制,单位为(秒)。
在web.config中加入如下的配置:

<system.web>
  <!--最大请求长度,单位为kb-->
  <httpRuntime maxRequestLength="20480" />
</system.web>

最后成功调用。

我只能说这个问题太抽象了,一步一坑。

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值