加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

$.ajax访问RESTful Web Service报错:Unsupported Media Type

发布时间:2020-12-16 02:10:23 所属栏目:百科 来源:网络整理
导读:最近在项目中,前台页面使用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

最近在项目中,前台页面使用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/",contentType:"application/json",textStatus){
		outResponse = data;
	}		
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读