使用Worklight Adapter将JSON数据发送到Jersey Rest Webservice

时间:2013-09-16 19:18:29

标签: json rest jersey ibm-mobilefirst

我尝试使用http适配器调用rest服务,但是得到了不支持的媒体类型异常。

我的适配器和服务器端代码如下

var invocationData = {             适配器:'MyHttpAdapter',             程序:'myAdapterProcedure',             参数:[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);

}

服务器端:         @放     @Path( “addNotes”)
    @Consumes( “应用程序/ JSON”)     @Produces( “应用程序/ JSON”)     public String addNotes(MyNotes pVo)抛出异常     {         System.out.println(“1231231”+ pVo);             返回pVo;          }

详细例外: 无法解析JSON字符串 Apache Tomcat / 6.0.35 - 错误报告

HTTP状态415 - 不支持的媒体类型

类型状态报告

消息不支持的媒体类型

描述服务器拒绝此请求,因为请求实体所采用的方法所请求的资源不支持该格式(不支持的媒体类型) )。

Apache Tomcat / 6.0.35

FWLSE0101E:引起:[project GMobile] java.io.IOException:意外字符'<'在第1行第1列                                                                                                                com.worklight.common.log.filters.ErrorFilter

尝试使用Put,Post方法调用并获得相同的异常。尝试使用'@Consumes({MediaType.APPLICATION_JSON})在服务器方法上仍然得到相同的错误。任何人都可以让我知道我在这里失踪了什么...

在这里找到相同的问题,没有解决方案。 参考: How to send the JSON data in rest web services?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用REST客户端检查您的REST服务(我使用firefox附加组件“RESTClient”来测试我在工作光之外的REST服务)?

如果在REST服务端没有问题,那么您需要检查http适配器“input”对象中的标头。

您必须在http请求中将content-type params设置为“application / json”。为此,请添加“headers”属性,如下所示:

var input = {
   method : 'put',
   returnedContentType : 'json',
   path : 'mobile/rest/notes/getMyWebData',
   parameters : params,
   headers : 'Content-Type: application/json'

};

问候。