从Android应用程序中的数据存储区检索数据时出现JDOObjectNotFoundException

时间:2014-05-06 19:56:39

标签: java android google-app-engine google-cloud-datastore

我正在使用app引擎后端创建一个Android应用程序。我使用谷歌应用程序引擎插件来创建一个Android连接的应用程序。这是我的实体。

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class User {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
Long id;
@Persistent
String email;
@Persistent
String password;

我使用插件生成我的端点。为了测试它,我将app引擎作为Web应用程序运行,我可以成功地使用每个方法。我导航到

 http://localhost:8888/_ah/admin/datastore 

我可以看到我输入的记录。为了确保生成的getUser方法有效,我转到API资源管理器并检索id = 1的用户并获得

{  “id”:“1”,  “email”:“this@that.com”,  “密码”:“1234” }

所以我知道它有效。在我的Android应用程序中,我连接到端点,如下所示:

User user = new User();
        Userendpoint.Builder endpointBuilder = new Userendpoint.Builder(AndroidHttp.newCompatibleTransport(), new JacksonFactory(), new HttpRequestInitializer() {
            public void initialize(HttpRequest httpRequest) {
            }
        });
        Userendpoint endpoint = CloudEndpointUtils.updateBuilder(endpointBuilder).build();
        try {

            User result = endpoint.getUser(1L).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }

我收到以下错误

com.google.api.client.googleapis.json.GoogleJsonResponseException:503服务不可用  {    “代码”:503,    “错误”:[{      “域名”:“全球”,      “message”:“javax.jdo.JDOObjectNotFoundException:无法检索具有密钥User(1)\ nNestedThrowables的种类User实体:\ norg.datanucleus.exceptions.NucleusObjectNotFoundException:无法检索具有密钥User(1)的用户类型的实体” ,      “reason”:“backendError”    }],

非常感谢任何建议或想法!

1 个答案:

答案 0 :(得分:1)

错误是我从笔记本电脑连接到开发服务器,但我正在连接到设备上的生产服务器。

更改

// For development server
protected static final String LOCAL_APP_ENGINE_SERVER_URL_FOR_ANDROID = "http://<Your IP>:<your port>/_ah/api";

// For production server
protected static final String LOCAL_APP_ENGINE_SERVER_URL_FOR_ANDROID = "https://<your version>-<your project ID>.appspot.com/_ah/api/";