0

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

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

var invocationData = { 适配器:'MyHttpAdapter',过程:'myAdapterProcedure',参数:[myJSONObject] };

WL.Client.invokeProcedure(invocationData, {
    onSuccess : success,
    onFailure : failure
});

功能 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 - 不支持的媒体类型

类型状态报告

消息不支持的媒体类型

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

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 }) 仍然得到相同的错误。谁能让我知道我在这里缺少什么...

在这里发现了同样的问题,没有解决方案。ref: 如何在 REST Web 服务中发送 JSON 数据?

4

1 回答 1

0

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

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

您必须在 http 请求中将内容类型参数设置为“application/json”。为此,请添加“headers”属性,如下所示:

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

};

问候。

于 2013-09-17T07:04:40.150 回答