代码500 Google App Engine Android非理性地显示,可防止云数据存储检索



当我尝试在Android应用程序中使用GAE来检索特定实体时,我会遇到以下错误(只有其中一些,其他实体可以完美工作)。错误是:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error
{
  "code" : 500,
  "errors" : [ {
    "domain" : "global",
    "message" : "Internal Error",
    "reason" : "internalError"
  } ],
  "message" : "Internal Error"
}
com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error
{
  "code" : 500,
  "errors" : [ {
    "domain" : "global",
    "message" : "Internal Error",
    "reason" : "internalError"
  } ],
  "message" : "Internal Error"
}
{
  "code" : 500,
  "errors" : [ {
    "domain" : "global",
    "message" : "Internal Error",
    "reason" : "internalError"
  } ],
  "message" : "Internal Error"
}
500 Internal Server Error
{
  "code" : 500,
  "errors" : [ {
    "domain" : "global",
    "message" : "Internal Error",
    "reason" : "internalError"
  } ],
  "message" : "Internal Error"
}
{"code":500,"errors":[{"domain":"global","message":"Internal Error","reason":"internalError"}],"message":"Internal Error"}

这似乎没有帮助,我尝试通过此链接中的最高答案添加日志记录,但这也不起作用(没有将日志发布到云控制台,或者至少我试图制作的任何日志发生)。我的实体类主题由:

定义
public class ZooperTheme {
    @Id
    private String themeID;
    public String creator;
    public String date;
    public String address;
    public int version;
    public String name;
    public int size;
    public int downloads;
    public int favorites;
    public int hides;
    public int popularity;
    public int errors;
    public String items;

它具有适合每个的合适的Getters/Setter。ThemeID的长度从1、2、3等开始,然后转换为字符串。当我使用以下代码时,一切都可以完美地工作(它下载了所有主题信息并将其转换为SQL DB:

themeendpoint.Builder endpointBuilder = new themeendpoint.Builder(
        AndroidHttp.newCompatibleTransport(),
        new JacksonFactory(),
        new HttpRequestInitializer() {
            public void initialize(HttpRequest httpRequest) { }
        });
endpointBuilder.setApplicationName(mCtx.getString(R.string.app_name));
themeendpoint endpoint = CloudEndpointUtils.updateBuilder(
        endpointBuilder).build();
DbAdapter dbAdapter = new DbAdapter(mCtx);
dbAdapter.openWrite();
dbAdapter.wipeThemeData();
try {
    CollectionResponseTheme response = endpoint.listTheme().execute(); 
    List<Theme> listResponse = response.getItems();
    for (Theme zt : listResponse) {
        String themeID = zt.getThemeID();
        String creator = zt.getCreator();
        String date = zt.getDate();
        String address = zt.getAddress();
        int version = zt.getVersion();
        String name = zt.getName();
        int size = zt.getSize();
        int popularity = zt.getPopularity();
        String items = zt.getItems();
        if (!(items != null)) {
            items = "";
        }
        dbAdapter.insertTheme(themeID, creator, date, address, "" + version, name, "" + size, "" + popularity, items);
    }

但是,当我尝试使用相同的代码创建上面的端点时,请尝试以下内容:

    Theme theme2 = endpoint.getTheme("2").execute();
    Theme theme1 = endpoint.getTheme("1").execute();

them2效果完美,但them1出现500代码错误!两者之间的唯一区别是,对于主题" 1",项目列具有信息(只是字符串"测试")和主题" 2",对于该列来说是空白的。除此之外,没有差异。我已经使用其他主题ID进行了测试,并且始终如一地,如果项目列为空白,则代码有效,如果其中有任何内容,则会出现代码500。这里可能会发生什么?

,所以我最终使它起作用。我从未解决过这个问题,但已解决:

  1. 将软件包/sha1添加到公共API下的凭据页面(我怀疑这做了任何事情,因为这不是访问问题"

  2. 扔掉了所有内容,并在新实体下重新上传数据库。之后,问题还没有再次出现。

相关内容

  • 没有找到相关文章

最新更新