zoukankan      html  css  js  c++  java
  • $.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;
    	}		
    });


     

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

  • 相关阅读:
    递归算法
    linux下如何使用split
    什么是OPTEE-OS
    ubuntu 18.04 64bit如何编译安装内核
    ubuntu 18.04 64bit没有声音如何解决
    如何解决ubuntu报的错误:You must put some 'source' URIs in your sources.list
    linux下如何安装解压工具rar
    如何将一个已有的仓库推送到一个空的新仓库中
    ubuntu 18.04 64bit下如何安装python开发工具jupyter
    ubuntu 18.04 64bit下如何安装python开发工具jupyterhub
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4886395.html
Copyright © 2011-2022 走看看