1

执行调用时出现服务器异常:

var x = '{"name": "Test","address": { "street": "White House"}}';
gapi.client.realestate.create(x).execute(function(resp) {
    console.log(resp);
});

java.lang.ClassCastException: com.google.appengine.repackaged.org.codehaus.jackson.node.TextNode cannot be cast to com.google.appengine.repackaged.org.codehaus.jackson.node.ObjectNode
    at com.google.api.server.spi.tools.devserver.RpcApiServlet.doSingleBackendCall(RpcApiServlet.java:131)
    at com.google.api.server.spi.tools.devserver.RpcApiServlet.service(RpcApiServlet.java:112)

如果我在 中使用相同的 JSON 表达式API Explorer,它就可以工作。@ApiMethod定义为:

@ApiMethod(name = "create", path = "properties", httpMethod = HttpMethod.POST)
public void create(RealEstateProperty property, User user) throws Exception {
4

1 回答 1

3

JS 客户端库方法需要 JSON 对象而不是 JSON 字符串,它为调用本身进行编码。此外,由于这是一个 POST 请求,您必须将 POST 主体定义为该resource方法的参数(不幸的是,这并没有很好地记录)

这应该有效:

var x = {"name": "Test","address": { "street": "White House"}};
gapi.client.realestate.create({"resource": x}).execute( ...
于 2013-07-26T20:20:46.887 回答