$.ajax通路RESTful Web Service一个错误:Unsupported Media Type

最近项目,使用头版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;
	}		
});


 

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/lcchuguo/p/4886395.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值