我尝试使用http适配器调用rest服务,但是得到了不支持的媒体类型异常 .
我的适配器和服务器端代码如下
var invocationData = {adapter:'MyHttpAdapter',procedure:'myAdapterProcedure',parameters:[myJSONObject]};
WL.Client.invokeProcedure(invocationData, {
onSuccess : success,
onFailure : failure
});
function myAdapterProcedure(prarams){
var input = {
method : 'put',
returnedContentType : 'json',
path : 'mobile/rest/notes/getMyWebData',
parameters : prarams
};
return WL.Server.invokeHttp(input);
}
服务器端:@PUT @Path("addNotes")
@Consumes("application/json")@Produces("application/json")public String addNotes(MyNotes pVo)throws Exception {System.out.println("1231231" pVo);返回pVo; }
详细异常:无法解析JSON字符串Apache Tomcat / 6.0.35 - 错误报告
HTTP状态415 - 不支持的媒体类型
type 状态报告
message 不支持的媒体类型
description 服务器拒绝了此请求,因为请求实体的格式不受请求方法所请求的资源支持(不支持的媒体类型) .
Apache Tomcat / 6.0.35
FWLSE0101E:引起:[project GMobile] java.io.IOException:第1行第1列的意外字符'<' com.worklight.common.log.filters.ErrorFilter
尝试使用Put,Post方法调用并获得相同的异常 . 尝试使用'@Consumes()在服务器方法上仍然得到相同的错误 . 任何人都可以让我知道我在这里失踪了什么...
没有解决方案,在这里找到了同样的问题 . 参考:How to send the JSON data in rest web services?
1 回答
您是否尝试使用REST客户端检查REST服务(我使用firefox附加组件“RESTClient”来测试我在工作光之外的REST服务)?
如果在REST服务端没有问题,那么您需要检查http适配器“input”对象中的标头 .
你必须在http请求中将content-type params设置为“application / json” . 为此,请添加“headers”属性,如下所示:
};
问候 .