最近项目,使用头版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. 一则简单演示样例看Oracle的“无私”健壮性

    Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...

  2. [半原创]指纹识别+谷歌图片识别技术之C++代码

    原地址:http://blog.csdn.net/guoming0000/article/details/8138223 以前看到一个http://topic.csdn.net/u/20120417/ ...

  3. 每个Android开发者必须知道的资源集锦

    英文原文:Resources every Android developer must know 随着 Android 平台持续惊人的增长,越来越多的开发人员开始工作于 Android 应用程序.而且 ...

  4. Linux从用户层到内核层系列 - GNU系列之glibc介绍

    题记:本系列文章的目的是抛开书本从源代码和使用的角度分析Linux内核和相关源代码,byhankswang和你一起玩转linux开发 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswa ...

  5. Gnu Linux下文件的字符编码及转换工具

    /*********************************************************************  * Author  : Samson  * Date   ...

  6. Nginx 进程间通信

    Linux下的IPC非常多,nginx的进程都是有亲缘关系的进程,对于他们的通信我们选择TCP socket进行通信.   TCP socket 用来做进程通信的优点有,   1.socket是文件描 ...

  7. 通过Camera进行拍照

    Android通过Camera来控制拍照,使用Camera比较简单,按步骤进行即可: 下面用一个示例来演示: Activity: package com.home.activity; import j ...

  8. C++ Preprosessor import

    #import Attributes Provides links to attributes used with the #import directive. Microsoft Specific ...

  9. Windows Phone开发人员必看资料

    win phone开发必看资料,下载地址收藏啦!收藏后可有选择性的下载,希望大家喜欢! 完整附件下载:http://down.51cto.com/data/414417 附件预览: Windows E ...

  10. 全面剖析Redis Cluster原理和应用 (转)

    1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...