遇到的问题---springMVC中ajax数组传值报400或者415错误

本文探讨了在SpringMVC中遇到的400和415错误,这些错误通常由于请求数据格式不正确导致。解决方法是确保jsp文件与java文件中的参数对应一致,例如在jsp中正确传递数组,并在java文件的@requestParam中指定value为'pointCodes[]',以匹配前端传来的键名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


错误原因

400 请求出错 
由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。 
415  
介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。  
检查 data 吧,看看提交到后台的数据是否合法!



这是由于在后台服务端定义的参数与传送的格式对应不上引起的。



解决方法

下面给出正确的使用方式:

jsp文件中

 		var pointCodes= new Array(); //定义一数组 
    		pointCodes=$('#pointCodes').val().trim().split(',');
    		$.ajax({
              
当你尝试使用`org.apache.httpcomponents:httpclient5`库的`HttpPost`发送`MultipartFile`类型的文件时,遇到HTTP状态码415 "Unsupported Media Type",这通常意味着服务器无法处理你提供的请求内容类型。这个错误通常是由于以下几个原因: 1. **Content-Type头设置错误**:`MultipartFile`默认的内容类型可能是`application/octet-stream`,但许多API期望特定的媒体类型,如`multipart/form-data`。你需要在构建`HttpEntity`时明确指定正确的`Content-Type`。 ```java MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addBinaryBody("file", fileBytes, ContentType.APPLICATION_OCTET_STREAM, filename); ``` 确保将`ContentType.APPLICATION_OCTET_STREAM`替换为你预期的媒体类型,并提供适当的`filename`。 2. **使用了旧版API**:如果你在使用旧版的`HttpClient`,记得更新到`HttpClient5`,因为旧版本可能没有直接支持`MultipartEntityBuilder`。 3. **服务器限制**:检查目标服务器的API文档,看看它是否接受这种形式的数据上或者是否有特定的上策略或要求。 为了解决这个问题,你可以按照以下步骤调整你的代码: ```java CloseableHttpResponse response; try (CloseableHttpClient httpClient = HttpClient5.create()) { HttpPost httpPost = new HttpPost(url); MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create() .setMode(HttpMultipartMode.BROWSER_COMPATIBLE) .addBinaryBody("file", file.getInputStream(), ContentType.parse("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"), filename); // 设置正确的Content-Type String boundary = entityBuilder.get_boundary(); httpPost.setHeader("Content-Type", "multipart/form-data; boundary=" + boundary); httpPost.setEntity(entityBuilder.build()); response = httpClient.execute(httpPost); } catch (IOException e) { // Handle exceptions... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿泽财商会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值