最近项目,使用头版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. Shell脚本检查memcache进程并自己主动重新启动

    修正版: #!/bin/sh #check memcache process and restart if down mm_bin="/usr/local/bin/memcached&quo ...

  2. hdu4602(矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4602 题意:对于每个数的分解,列出其元素的出现的个数. 1    2   3    4    5 1  ...

  3. 用JS实现发邮件的功能 完美解决

    怎样用JS实现发邮件的功能? 我想用JS实现把页面文本框中的内容直接通过邮件的方式发送到一个指定的邮箱.fengxq给出的答案是<script language=javascript>if ...

  4. OpenLayers学习笔记4——使用jQuery UI实现測量对话框

    OpenLayers学习最好的方式就是跟着其自带的演示样例进行学习,另外对web前端的开发设计要了解,慢慢积累,这样在一般的小项目中应该是足够用了. 本篇參照量測demo实现对话框形式的量測,抛砖引玉 ...

  5. Android网络编程http派/申请服务

    最近的研究Android网络编程知识,这里有一些想法,今晚学习.与您分享. 在实际的应用程序的开发非常需要时间appserver请求数据,那么app怎样发送请求呢?以下的代码就是当中的一种情况.使用H ...

  6. C++ STL源代码学习之算法篇

    ///因为篇幅太长,因此,删去了非常多接口,仅仅分析了内部实现,算法对迭代器的要求也被删去 /// search. template <class _ForwardIter1, class _F ...

  7. POJ 1422 Air Raid(二分图匹配最小路径覆盖)

    POJ 1422 Air Raid 题目链接 题意:给定一个有向图,在这个图上的某些点上放伞兵,能够使伞兵能够走到图上全部的点.且每一个点仅仅被一个伞兵走一次.问至少放多少伞兵 思路:二分图的最小路径 ...

  8. cocos2dx 3.1从零学习(六)——CocosStudio(VS2013project导入及环境设置)

    导入libCocosStudio.libExtensions.libGUI 新建的project例如以下图: 加入现有项目 右键解决方式.例如以下操作: watermark/2/text/aHR0cD ...

  9. Android Bitmap 载入与像素操作

    Android Bitmap 载入与像素操作 一:载入与像素读写 在Android SDK中,图像的像素读写能够通过getPixel与setPixel两个Bitmap的API实现. Bitmap AP ...

  10. Lua 与C 交换 第一篇

    编译 windows上编译lua源代码 cl /MD /O2 /W3 /c /DLUA_BUILD_AS_DLL *.c del *.o ren lua.obj lua.o ren luac.obj ...