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

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

随机推荐

  1. android画笔错位问题的解决

    下面的画画板的代码: public class MainActivity extends Activity { private ImageView iv; private Bitmap baseBit ...

  2. 4.windows和Linux下创建oracleusername表空间,表,插入数据,用户管理表等操作

    进入超级管理员,运行下面命令 Window下创建数据库.表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 依据实际安装环境进行调整 CREATE TABLESPACE ts ...

  3. 真实世界里的钢铁侠-特斯拉汽车创始人埃隆&#183;马斯克(Elon Musk)

    真实世界里的钢铁侠--特斯拉汽车公司和SpaceX公司总裁马斯克(31岁).当我们得意于「站在山上踢几块石头下去」或是「站在风口上的猪」的成功理论的时候,我们真的成功了吗?我们到底创造了什么?改变了什 ...

  4. Leetcode_num13_Climbing Stairs

    称号: You are climbing a stair case. It takes n steps to reach to the top. Each time you can either cl ...

  5. ThinkPHP的连贯操作方法中field方法

    ThinkPHP的连贯操作方法中field方法有很多的使用技巧,field方法主要目的是标识要返回或者操作的字段,下面详细道来. 1.用于查询 在查询操作中field方法是使用最频繁的. $Model ...

  6. iOS_UIButton 简单操作

    UIButton 风格 typedef NS_ENUM(NSInteger, UIButtonType) { UIButtonTypeCustom = 0, // no button type UIB ...

  7. Android 网络编程 Socket Http

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  8. SE 2014年5月27日

    R1模拟总部,R2 与R3模拟分部 如图配置 要求使用 GRE over IPSec VPN 主模式,启用动态路由协议rip使得总部与两分部内网可相互通讯,但要求分部用户数据流不允许互通! 步骤: 1 ...

  9. cowboy rest

    REST Flowcharts 这章节将通过一些列不同的流程图来介绍REST处理状态机. 一个请求主要有四条路线,一个是方法OPTIONS. 一个是方法GET和HEAD.一个是PUT.POST和PAT ...

  10. 【DRP】删除递归树的操作

    正如图呈现的树结构.本文从任意节点删除树形结构.提供解决方案 图中,不包括其他结点的是叶子结点.包括其他结点的是父结点,即不是叶子结点. 一 本文的知识点: (1)递归调用: 由于待删除的结点的层次是 ...