$.ajax通路RESTful Web Service一个错误:Unsupported Media Type
2023-09-27 14:27:02 时间
最近项目,使用头版jquery ajax访问背景CXF发布时间rest维修,结果遇到了错误"Unsupported Media Type"。
公布的服务java代码例如以下:
import javax.jws.WebService; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Response; @WebService @Produces({ "application/json" }) public class TrackService { @POST @Path("/trackInBatch/") @Consumes("application/json") public Response postTrackInfoInBatch(List<TrackPosition> positions) { return retrieve(positions, clientGen, trafficMapLayerId, projectParaLayerId, "0"); } }
调用服务的javascript代码例如以下:
$.ajax({ url : "/myapp/rest/track/trackInBatch/", async:false, type : "POST", dataType:"json", data:[], error:function(XMLHttpRequest, textStatus, errorThrown){ alert(errorThrown); }, success: function(data, textStatus){ outResponse = data; } });
调用的服务的时候报错:Unsupported Media Type。通过HttpWatch查看原始的request和response报文。发现返回request报文中的contentType是:application/x-www-form-urlencoded。查看jquery.ajax()的API文档,发现contentType的默认值就是:application/x-www-form-urlencoded。
可是后台公布的rest服务。@Consumes("application/json")要求request报文的contentType必须是application/json。
手动设置contentType之后,发现问题解决。
$.ajax({ url : "/myapp/rest/track/trackInBatch/", async:false, type : "POST", dataType:"json", contentType:"application/json", data:[], error:function(XMLHttpRequest, textStatus, errorThrown){ alert(errorThrown); }, success: function(data, textStatus){ outResponse = data; } });
版权声明:本文博主原创文章,博客,未经同意不得转载。
相关文章
- jenkins连接提示错误urllib.error.HTTPError: HTTP Error 403
- ArcMap导入数据到ArcSDE报000597或者000224的错误
- ios 程序发布使用xcode工具Application Loader 正在通过ITUNES STORE进行鉴定错误
- Google Earth Engine (GEE)——公式expression表达式容易犯的错误
- 自动化测试新手常犯的9个错误,看看有没有你踩过的坑
- redis连接错误org.springframework.data.redis.RedisConnectionFailureException Unable to connect to
- 踩坑记:5个让你放弃学Python的常见错误
- pam_frpintd.so 错误修复
- 将float转换为数据类型numeric时出现算术溢出错误
- SQLSERVER2008 18456错误
- Linux pip错误分析 (Running pip as the ‘root‘ user can result in broken permissions and conflict)
- odoo15 更新新模块时错误for modifier “invisible“: Unknown field state in domain
- centos上 小程序部署 nginx+https+ssL 提示错误:对应的服务器 TLS 为 TLS 1.0 ,小程序要求的 TLS 版本必须大于等于 1.2