Java 将密钥发送到应用程序引擎终结点
我正在尝试向谷歌应用程序引擎端点发送一个包含密钥的对象。但无法反序列化该对象。这就是我得到的错误:Java 将密钥发送到应用程序引擎终结点,java,google-app-engine,google-cloud-endpoints,Java,Google App Engine,Google Cloud Endpoints,我正在尝试向谷歌应用程序引擎端点发送一个包含密钥的对象。但无法反序列化该对象。这就是我得到的错误: java.io.IOException: com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: Form["identity"]->FormsIdent
java.io.IOException: com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException:
(was java.lang.NullPointerException)
(through reference chain:
Form["identity"]->FormsIdentity["user"]->User["key"]->com.google.appengine.api.datastore.Key["appId"])
这是我正在发送的对象:
"identity":{
"user":
{
"key" : {
"kind" : "User",
"appId" : "no_app_id",
"id" : "1",
"complete" : true,
"namespace" : ""
},
"googleID" : "8493582",
"emailAddress" : "xxxxx@gmail.com",
"credential" : "xxxx@gmail.com"
},
"deviceID":"4234o34i523534"
}
但是我只得到前端的错误,因为端点内的代码是执行的。当密钥被序列化为json时,它将尝试从key.class调用getAppId()
public String getAppId() {
return appIdNamespace.getAppId();
}
正如您所看到的,这个getter试图访问appIdnamespace,在您的例子中,它很可能为null。无法显式设置appIdnamespace,但它是在使用KeyFactory创建密钥时生成的,或者在数据存储已持久化该对象之后生成的
由于您没有发布返回此标识对象的方法的代码,我不知道为什么您的用户密钥没有设置appIdnamespace,但我猜测您没有返回已持久化的对象,或者密钥没有正确创建